0
我想了解我的RouteConfig安裝程序中的行爲。以下是我有:ASP.NET URL重寫Html.BeginForm控制器
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "2KeywordController",
url: "{keyword1}-{keyword2}-{controller}/{action}",
defaults: new { action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
}
}
我有一個名爲的ContactController控制器和/Views/Contact/Index.cshtml下一種觀點認爲,有以下創建窗體:
@using (Html.BeginForm("Index", "contact", FormMethod.Post, new { id = "contactform" }))
,當我瀏覽以example.com/kw1-kw2-contact正確調用ContactController並顯示默認聯繫人視圖。當我看到源代碼時,我驚訝地發現表單的動作被設置爲「/ kw1-kw2-contact」而不是「/ contact」。有沒有辦法使用Html.Begin(),但只有控制器名稱出現在沒有兩個關鍵字的行動?例如/聯繫
所以BeginForm將使用最後的路線並且BeginRouteForm允許你定義動作?謝謝。 – Josh
@Josh,恰到好處。實際上很小的修正:'BeginForm'將使用匹配請求的**第一條**路線。路線按您定義的順序進行評估。通過'BeginRouteForm',你可以明確地指定你想用他的名字使用的路線。 –