簡體   English   中英

FormMethod.Get中的C#MVC路由:如何使用路由表中的路由

[英]C# MVC routing in FormMethod.Get: How to use route from route table

我有一個FormMethod.Get ,它從一個大多數只讀的表單中獲取兩個參數。 這兩個參數是在只讀表單上顯示所有其他值所需的唯一查詢參數,因此它們是文本框(大多數值是DisplayFor()或已禁用)。 通常,我可以通過輸入.../Home/Edit/S6/B043導航到只讀形式。 但是,由於這是表單提交,因此顯示的URL類似於.../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
}

您是否有其他特殊原因想要顯示不同的URL? 每當您提交(GET)表單時,如果您擔心有人會使用... / Home / Edit / S6 /這樣的URL來訪問該網站,則該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上的所有參數,但是一切都取決於您要完成的工作。

您總是可以手寫表單標簽,並使用UrlHelper創建URL。 然后將在服務器端創建它,並根據需要適當顯示。

<form id="get-card" method="get" action="@Url.Action("Edit", "Home", routevalues)">
<!-- code here -->
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM