2016-02-18 112 views
0

我想发送日期到控制器使用ajax但得到空。为什么?发布日期时间到控制器

enter image description here

@{ 
ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<script src="~/Scripts/jquery-2.2.0.min.js"></script> 
<script src="~/Scripts/moment.min.js"></script> 
<script src="~/Scripts/bootstrap.min.js"></script> 
<script src="~/Scripts/bootstrap-datetimepicker.min.js"></script> 

<link href="~/Content/bootstrap.min.css" rel="stylesheet" /> 
<link href="~/Content/bootstrap-datetimepicker.min.css" rel="stylesheet" /> 

<div class="container"> 
<div class="row"> 
    <div class='col-sm-6'> 
     <div class="form-group"> 
      <div class='input-group date' id='datetimepicker1'> 
       <input type='text' class="form-control" /> 
       <span class="input-group-addon"> 
        <span class="glyphicon glyphicon-calendar"></span> 
       </span> 
      </div> 
     </div> 
    </div> 
    <script type="text/javascript"> 
     $('#datetimepicker1').datetimepicker({ useCurrent: false }); 
     $('#datetimepicker1').on("dp.hide", function (e) { 
      $.ajax({ 
       url: "/Home/GetData", 
       type: "POST", 
       data: JSON.stringify($('#datetimepicker1').data('DateTimePicker').date()), 
       contentType: "application/json", 
       success: function (result) { alert('Done') }, 
       error: function (r, e, s) { alert(e) } 
      }); 
     }); 
    </script> 
</div> 
</div> 

控制器:

public class HomeController : Controller 
{ 
    // 
    // GET: /Home/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult GetData(string test) 
    { 
     return View(); 
    } 
} 
+0

如果它的日期,那么参数应该是'DateTime test',但是ajax需要'data {test:$('#datetimepicker1')。val()},并删除'contentType:“application/json”,' –

+0

在这些更改后,我在Chrome控制台中得到了“POST http:// localhost:8798/Home/GetData 500(内部服务器错误)”。和控制器没有得到任何东西。 – A191919

+0

您是否删除了'contentType:“application/json”,'?您的发送日期的格式与您的服务器文化所期望的相同吗? –

回答

1

你不传递一个名称/值对回该参数名称(test)相匹配的控制器的方法和不需要字符串化的数据。更改AJAX脚本

$.ajax({ 
    url: '@Url.Action("GetData", "Home")', // don't hard code your url's 
    type: "POST", 
    data: { test: $('#datetimepicker1').data('DateTimePicker').date() }, 
    // contentType: "application/json", delete this 
    success: function (result) { alert('Done') }, 
    error: function (r, e, s) { alert(e) } 
}); 

而且因为你发布一个DateTime值时,控制器方法应该是

[HttpPost] 
public ActionResult GetData(DateTime test) 
{ 
    return View(); 
} 

这假定日期值是在服务器的文化相一致的格式,或ISO格式('yyyy-MM-dd HH:mm'),例如,通过使用

data: { test: $('#datetimepicker1').data('DateTimePicker').date().format('YYYY-MM-DD HH:mm') }, 

请注意,你的方法返回一个视图,但你不能做与HTML任何你返回(只显示一个提醒)

相关问题