我正在为DropDown创建一个表单,如下所示:
@{
Html.BeginForm("View", "Stations", FormMethod.Get);
}
@Html.DropDownList("id", new SelectList(ViewBag.Stations, "Id", "Name"), new { onchange = "this.form.submit();" })
@{
Html.EndForm();
}
如果我从下拉列表中选择一个值,我会被重定向到正确的控制器,但URL并不像我想要的那样:
/站/视图?ID = f2cecc62-7c8c-498d-b6b6-60d48a862c1c
我想要的是:
/站/视图/ f2cecc62-7c8c-498d-b6b6-60d48a862c1c
那么如何将id = querystring参数替换为我想要的更简单的URL方案呢?
答案 0 :(得分:2)
带有FormMethod.Get
的表单将始终将其表单控件的值作为查询字符串值进行回发。浏览器无法根据您的路由配置生成URL,因为它们是服务器端代码。
如果您真的想要生成/Stations/View/f2cecc62-7c8c-498d-b6b6-60d48a862c1c
,那么您可以使用javascript / jquery来构建自己的网址并重定向
@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()
事件)< / p>
答案 1 :(得分:0)
删除&#34; hadoop-source-code/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ApplicationMasterProtocolPBClientImpl.java#allocate
&#34;
从
id