我有一个带下拉列表的视图。我想从下拉列表中选择一个值,然后根据该值将其拖到“查看与该选择相关的表单”中。
看起来像这样:
我希望该表单显示在此ddlist下方,如果用户更改ddlist中的值,它将更改该表单。
这是我的“添加”视图:
<div id="matSelContainer">
@Html.Action("SelectMaterial", "Materials", "Materials")
</div>
以下是“ SelectMaterial”视图:
@model Procurement.Models.Material.MaterialType
@Html.Label("Select a Material Type: ")
@Html.DropDownListFor(
x => x.MaterialTypeList,
new SelectList(Model.MaterialTypeList, "MaterialTypeId", "Name")
)
这是我的控制器:
public ActionResult Add()
{
return View();
}
public ActionResult SelectMaterial()
{
materialTypes.LoadMaterialTypes();
return PartialView(materialTypes);
}
我想为每种材料类型都有一个单独的视图,然后根据ddlist中的选择调用该视图。
有人可以告诉我如何实现这一目标吗?
是否要在“添加”视图中添加单独的@ Html.Action,然后在Controller中执行另一个操作以返回PartialView?
但是如何将其与Onchange事件联系起来?
更新<< 这几乎是对我有用的东西:
“ SelectMaterial”视图:
@model Procurement.Models.Material.MaterialType
@Html.Label("Select a Material Type: ")
@Html.DropDownListFor(
x => x.MaterialTypeList,
new SelectList(Model.MaterialTypeList, "MaterialTypeId", "Name"),
new { @onchange="CallChangefunc(this.value)" })
<script>
function CallChangefunc(val) {
//alert("i am a " + obj.options[obj.selectedIndex].text);
//alert(obj.options[obj.selectedIndex].text);
window.location.href = "/Materials/MyMethod/" + val;
}
</script>
在我的控制器中,我有以下ActionResult:
public ActionResult MyMethod(string value)
{
return PartialView();
}
当我更改选择内容时,将调用我的控制器,但传入的值为null。我可以在浏览器地址栏上看到正在传递期望的选定值。为什么控制器中为null? (我尝试将[HttpPost]添加到ActionResult中没有任何运气。)