У меня есть вид с выпадающим списком. Я хотел бы выбрать значение из выпадающего списка и в зависимости от этого значения включить в форму просмотра, связанную с этим выбором.
выглядит так:
![enter image description here](https://i.stack.imgur.com/K4DLr.png)
Я бы хотел, чтобы форма отображалась под этим списком 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 в представление «Добавить», а затем в контроллере сделать еще одно действие, возвращающее PartialView?
Но как связать это с событием Onchange?
Обновление <<
Вот что у меня почти работает: </p>
Просмотр "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();
}
Мой контроллер вызывается, когда я меняю выбор, но входящее значение равно нулю. Я вижу в адресной строке браузера, что ожидаемое выбранное значение передается. Почему это ноль в контроллере? (Я попытался добавить [HttpPost] в ActionResult, но безуспешно.)