我有一个FormMethod.Get
,它从一个大多数只读形式中获取两个参数。这两个参数是显示只读表单上所有其他值所需的唯一查询参数,因此它们是文本框(大多数值为DisplayFor()
或禁用)。通常,我可以通过键入.../Home/Edit/S6/B043
导航到我的只读表单。但是,由于这是表单提交,因此会显示类似此.../Home/Edit?Location=S6&Facility=B043
的网址。当我提交表单以获取其余数据时,如何让它显示.../Home/Edit/S6/B043
的路线?或者我是否必须回到我使用window.location.href =
的javascript的原始计划。
谢谢。
@using (@Html.BeginForm("Edit", "Home", routevalues, FormMethod.Get, new { id = "get-card" }))
{
// code here
}
答案 0 :(得分:1)
您是否有任何特殊原因要显示不同的网址?每当您提交(GET)表单时,URL将包含您要发送回控制器的所有值和参数,如果您担心,因为有人会使用像... / Home / Edit / S6 /这样的URL访问该站点B043然后你可以像这样将自定义URL添加到你的RoutConfig文件中。
routes.MapRoute("mycustomUrl", "Edit/{param1}/{param2}",
new { controller = "controllerName", action = "Edit",
param1 = UrlParameter.Optional,
param2 =UrlParameter.Optional });
之后你可以用... / Home / Edit / S6 / B043来调用你的视图并且可以工作。 如果你想拥有一个友好的URL,你可以使用POST,这样你就不会看到URL上的所有参数,但一切都取决于你想要完成的事情。
答案 1 :(得分:1)
您可以随时手写表单标记并使用UrlHelper创建URL。然后它将在服务器端创建,并根据需要进行适当显示。
<form id="get-card" method="get" action="@Url.Action("Edit", "Home", routevalues)">
<!-- code here -->
</form>