我试图弄清楚如何让 @Html.DropDownList 指向它创建的选择的 onChange() 事件上的另一个操作,操作名称存储在选择列表的选项值中。到目前为止,我得到的壁橱是这样的:
看法:
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
<h5>Select service to test:</h5>
@Html.DropDownList("ddl", new SelectList(Model.Services, "MvcActionName", "ServiceName"),
new {
onchange = @"
var form = document.forms[0];
var action = $('#ddl').val();
form.action=action;
form.submit();"
})
}
它发出的是这样的:
<form action="/" method="get"> <h5>Select service to test:</h5>
<select id="ddl" name="ddl" onchange="
var form = document.forms[0];
var action = $("#ddl").val();
form.action=action;
form.submit();"><option value="">Ping Service</option>
<option value="Data">Data Service</option>
</select>
</form>
但这所做的只是尝试调用“localhost/Data”并失败,因为它应该调用“localhost/Home/Data”。我正在使用标准的 MVC3 路由设置,但到目前为止,我还无法在那里进行更改,从而导致 BeginForm 助手发出更好的表单块。
再说一次,我不确定路由是否是问题所在,或者我是否走错了路才能到达我想去的地方。任何帮助或指导将不胜感激。