0

RouteConfigセットアップ内の動作を理解しようとしています。これが私が持っているものです:

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が正しく呼び出され、デフォルトの連絡先ビューが表示されます。ソースを見ると、フォームのアクションが「/contact」ではなく「/kw1-kw2-contact」に設定されていることに驚きました。Html.Begin()を使用する方法はありますが、2つのキーワードなしでコントローラー名だけが動作しているように見えますか?例/contact

4

1 に答える 1

3

Html.Begin()を使用する方法はありますが、2つのキーワードなしでコントローラー名だけが動作しているように見えますか?

もちろん、のBeginRouteForm代わりにを使用して、使用BeginFormするルート名を指定することもできます。

@using (Html.BeginRouteForm(
    routeName: "Default", 
    routeValues: new { action = "index", controller = "contact" }, 
    method: FormMethod.Post, 
    htmlAttributes: new { id = "contactform" })
)
{
    ...
}

放出します:

<form action="/contact" id="contactform" method="post">
    ...
</form>
于 2013-02-04T21:25:59.623 に答える