处理HTML.DropDownList Razor MVC中的onchange事件

Mil*_*ara 33 asp.net-mvc html-helper razor asp.net-mvc-3

onchange通过简单的HTML 处理具有选定值的事件,如下所示:

<select onchange="location = this.value;">
         <option value="/product/categoryByPage?PageSize=15" selected="selected">15</option>
         <option value="/product/categoryByPage?PageSize=30" selected="selected">30</option>
         <option value="/product/categoryByPage?PageSize=50" selected="selected">50</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这样做:

List<SelectListItem> items = new List<SelectListItem>();
string[] itemArray = {"15","30","50"};

for (int i = 0; i < itemArray.Count(); i++)
{
    items.Add(new SelectListItem 
    { 
        Text = itemArray[i], 
        Value = "/product/categoryByPage?pageSize=" + itemArray[i]
    });
}

ViewBag.CategoryID = items;
@Html.DropDownList("CategoryID")
Run Code Online (Sandbox Code Playgroud)

我该如何处理onchange@Html.DropDownList()

dkn*_*ack 59

描述

您可以使用该DropDownList方法的另一个重载.选择您需要的那个并使用您的html属性传入一个对象.

样品

@Html.DropDownList("CategoryID", null, new { @onchange="location = this.value;" })
Run Code Online (Sandbox Code Playgroud)

更多信息

  • +1从未想过为此使用过载. (3认同)
  • 如何使用定位? (3认同)

pix*_*exy 5

dknaack的方式对我不起作用,我也找到了这个解决方案:

@Html.DropDownList("Chapters", ViewBag.Chapters as SelectList, 
                    "Select chapter", new { @onchange = "location = this.value;" })
Run Code Online (Sandbox Code Playgroud)

哪里

@Html.DropDownList(controlName, ViewBag.property + cast, "Default value", @onchange event)
Run Code Online (Sandbox Code Playgroud)

在控制器中,您可以添加:

DbModel db = new DbModel();    //entity model of Entity Framework

ViewBag.Chapters = new SelectList(db.T_Chapter, "Id", "Name");
Run Code Online (Sandbox Code Playgroud)