我正在为 DropDown 创建一个表单,如下所示:
@{
Html.BeginForm("View", "Stations", FormMethod.Get);
}
@Html.DropDownList("id", new SelectList(ViewBag.Stations, "Id", "Name"), new { onchange = "this.form.submit();" })
@{
Html.EndForm();
}
如果我从下拉列表中选择一个值,我会被重定向到正确的控制器,但 URL 不是我想要的:
/Stations/View?id=f2cecc62-7c8c-498d-b6b6-60d48a862c1c
我想要的是:
/站/视图/f2cecc62-7c8c-498d-b6b6-60d48a862c1c
那么如何将 id= querystring 参数替换为我想要的更简单的 URL Scheme?
一个表格带有FormMethod.Get
将始终将其表单控件的值作为查询字符串值回发。浏览器无法根据您的路由配置生成 url,因为它们是服务器端代码。
如果你真的想生成/Stations/View/f2cecc62-7c8c-498d-b6b6-60d48a862c1c
,然后你可以使用 javascript/jquery 构建你自己的 url 并重定向
@using (Html.BeginForm("View", "Stations", FormMethod.Get))
{
@Html.DropDownList("id", new SelectList(ViewBag.Stations, "Id", "Name"))
}
var baseUrl = '@Url.Action("View", "Stations")';
$('#id').change(function() {
location.href = baseUrl + '/' $(this).val();
});
附注:提交于.change()
事件不是预期的行为,并且会让用户感到困惑。建议您添加一个按钮让用户做出选择,检查它然后提交表单(处理按钮的.click()
事件而不是下拉列表的.change()
event)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)