从列表框更改事件的Ajax帖子上的模型属性null

时间:2013-05-10 23:59:10

标签: asp.net-mvc jquery razor

我有一个包含列表框的视图。当用户点击列表框中的项目时,我必须发布到控制器操作方法,以查看列表框中选定/取消选择的项目的值。

因此它会发布到控制器操作,但模型将发布为null。当我发布到控制器时,我会对表单进行序列化。

在我的应用程序的其他页面中,当我序列化表单并发布到控制器时,模型永远不会为空。我不确定这个页面是怎么回事,但这里是代码。

JS档案

  var serviceEntryURL = '@Url.Action("ServiceSystemSelection", "ServiceEntry")';


    $('#systemlstbox').change(function () {
        //        alert('x');
        var overlay = $('<div>loading errorcodes and parts..</div>').prependTo('body').attr('id', 'overlay');
        $.post(serviceEntryURL,
              $("#form").serialize(),
               function (data) {
                   //                   $("#runDatestreeview").remove();
                   //                   $("#testExceptiontreeview").remove();
                   //                   $("#treeview").remove();

                   //                   $("#main").html(data);
                   //                   $("#ErrorCodeDisplay").empty();

               }, "html");
        overlay.remove();
    });

查看

@model RunLog.Domain.Entities.ServiceEntry
@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm(new { id = "form", enctype = "multipart/form-data" }))
{

    <fieldset>
        <legend>Enter a new Service Log Entry</legend>
        <h3>
        </h3>
        @Html.ValidationSummary(true)
        <div class="exception">@(ViewBag.ErrorMessage)</div>
        <div class="bodyContent">
            <span class="leftContent">
                @Html.Label("Service Request Number")
            </span><span class="rightContent">[Generated] </span>
        </div>
        <div class="bodyContent">
            <span class="leftContent">
                @Html.Label("Service Request Date / Time")
            </span><span class="rightContent">
                @Html.EditorFor(model => model.ServiceDateTime)
              </span>
        </div>
        <div class="bodyContent">
            <span class="leftContent">
                @Html.Label("Technician")
            </span><span class="rightContent">
                @Html.DropDownList("TechnicianID", String.Empty)
            </span>
        </div>
        <div class="bodyContent">
            <span class="leftContent">
                @Html.Label("System")
            </span><span class="rightContent">
                @Html.ListBoxFor(model => model.SelectedSystemIDs, new
                    MultiSelectList(ViewBag.SystemID, "Text", "Value",
                     Model.SelectedSystemIDs), new { id = "systemlstbox", name = "listbox" })
            </span>
        </div>
}

控制器操作

 [HttpPost]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ServiceSystemSelection(ServiceEntry serviceEntry)
        {

}

1 个答案:

答案 0 :(得分:0)

我修复了它,表单序列化行是错误的。

$('#systemlstbox').change(function () {
    //        alert('x');
    $.post(serviceEntryURL,
          $('form').serialize(),
           function (data) {
           }, "html");
});