@ html.dropdown onchange событие MVC5 - PullRequest
0 голосов
/ 03 июля 2018

У меня есть вид с выпадающим списком. Я хотел бы выбрать значение из выпадающего списка и в зависимости от этого значения включить в форму просмотра, связанную с этим выбором.

выглядит так:

enter image description here

Я бы хотел, чтобы форма отображалась под этим списком 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, но безуспешно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...