列表框更改事件在Ajax发布上模型属性为null [英] Model properties null on Ajax post from list box change event

查看:129
本文介绍了列表框更改事件在Ajax发布上模型属性为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a view which contains a list box. when users click on an item in the list box I have to post to a controller action method to see the value of the items selected/de-selected in the list box.

因此它正在发布到控制器操作,但是模型被发布为null.当我发布到控制器时,我会序列化表格.

So it is posting to the controller action but the model is posted as null. When I post to the controller, I do serialize the form.

在我的应用程序的其他页面中,当我序列化表单并将其发布到控制器时,模型永远不会为null.我不确定此页面上发生了什么,但是这是代码.

In other pages of my application when I serialize the form and post to the controller, the model is never null. I am not sure whats going on in this page but here is the code.

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)
        {

}

推荐答案

我已将其修复,表格序列化行有误.

I fixed it, the form serialization line was wrong.

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

这篇关于列表框更改事件在Ajax发布上模型属性为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆