我绑定了一个带有一些值的下拉列表,并在选择下拉列表时调用我的帖子操作。看起来像
@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属性中选择下拉区域。
怎么办?
答案 0 :(得分: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库加载到您的页面。
答案 1 :(得分: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>
}
}