0

我用一些值绑定了一个下拉列表,并在选择的下拉列表更改时调用我的发布操作。看起来像

@Html.DropDownListFor(m => m.DistrictId, Model.DistrictList, "Select", new
       {
           disableValidation = "true",
           onchange = @"
            var form = document.forms[0]; 
            form.action='Index';
            form.submit();"
       })

这可以很好地调用我的控制器发布操作。但我无法在我的模型 DistrictId 属性中获得下拉选择的值。

对于我的控制器功能如下所示

[HttpPost]
        public ActionResult Index(HomeModel homeModel)
        {
            AdminController adminController = new AdminController();
            Guid userId = new Guid();
            homeModel.ComplianceModelList = complianceRepository.LoadComplianceModel(userId, homeModel.DistrictId);
            LoadDistrict(homeModel);
            return View(homeModel);
        }

我想在我的 homeModel.DistrictId 属性中选择 DistrictId 的下拉列表。

怎么做 ?

4

2 回答 2

2

像这样更改您的标记

@Html.DropDownListFor(m => m.DistrictId, Model.DistrictList, "Select")

并有一些 javascript 来处理您的更改事件,以便它将序列化您的表单并使用 ajax 将其发送到您的操作方法。

$(function(){
  $("#DistrictId").change(function(e){
    var _this=$(this);

    $.post("@Url.Action("Index","Home")",_this.closest("form").serialize(),
                                                             function(response){
          // do something with response.
    });
  });
});

假设您已将 jQuery 库加载到您的页面。

于 2013-04-02T13:59:36.797 回答
1

现在我得到了解决方案

下面的代码运行良好。

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <h2 class="gridTitle">
            Compliance</h2>
        if (User.Identity.IsAuthenticated && User.IsInRole("SuperAdmin"))
        {
        <div class="complianceSubDiv">
            <div class="complianceRightDiv">
                @Html.LabelFor(model => Model.DistrictId)
                @Html.DropDownListFor(m => m.DistrictId, Model.DistrictList, "Select", new
           {
               disableValidation = "true",
               onchange = @"                        
                form.submit();"
           })</div>
        </div>
        }
}
于 2013-04-02T15:12:50.363 回答