我尝试在dropdownlist中调用控件操作所选项目已更改,我使用jquery执行此操作:
@Html.DropDownListFor(model => model.SelectedItemType.RowId, new SelectList(Model.ItemTypes, "RowId", "ItemTypeName")
, htmlAttributes: new { @class = "form-control SelectList",@id="itemTypesDropDown", style = "height:300px", @size = 5
}))
和
$("#itemTypesDropDown").change(function () {
var selectedValue = $('#itemTypesDropDown').val();
$.post('@Url.Action("Select", "Home")', { selectedRowId: selectedValue }, function (data) {
});
});
,控制措施是:
[HttpPost]
public ActionResult Select(long selectedRowId)
{
SetIndexViewDatas();
var itemtypemodel = new ItemTypeViewModel
{
ItemTypes = _db.Inv_ItemType.Select(x => x).ToList(),
SelectedItemType = _db.Inv_ItemType.FirstOrDefault()
};
return View("Index", itemtypemodel);
}
和index.cshtml:
<div class="row">
<div class="form-group verticalAlign">
@Html.LabelFor(model => model.SelectedItemType.ItemTypeName, "Attribute Name", htmlAttributes: new { @class = "control-label col-md-4 lable" })
<div class="col-md-8">
@Html.EditorFor(model => model.SelectedItemType.ItemTypeName, "Attribute Name", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.SelectedItemType.ItemTypeName, "", new { @class = "text-danger" })
</div>
</div>
<br />
一切正常,在选定的项目更改后调用select
操作并将itemtypemodel
发布到index
视图,但问题是它没有在{{index
中加载数据1}},我在哪里做错了?
答案 0 :(得分:1)
您正在进行ajax调用,这意味着您将保持在同一页面上。你的方法需要返回一个局部视图,真的应该是一个GET。然后你需要用你返回的html更新DOM
public ActionResult Select(long selectedRowId)
{
....
return PartialView("Index", itemtypemodel);
}
在视图中,包含一个元素作为占位符以呈现您返回的部分视图
<div id="myContent"></div>
并将脚本修改为
$("#itemTypesDropDown").change(function () {
$.post('@Url.Action("Select", "Home")', { selectedRowId: $(this).val() }, function (data) {
$('#myContent').html(data);
});
});
或者,如果您不想更新当前页面,而是想要重定向到另一个页面,请不要使用ajax(只需使用正常的提交和重定向)。