@ html.dropdown onchange事件MVC5

时间:2018-07-03 20:13:24

标签: asp.net-mvc-5

我有一个带下拉列表的视图。我想从下拉列表中选择一个值,然后根据该值将其拖到“查看与该选择相关的表单”中。

看起来像这样:

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,然后在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中没有任何运气。)

0 个答案:

没有答案