6
@{
    ViewBag.Title = "About Us";
}

@using (Html.BeginForm(new RouteValueDictionary { {"Action","Index"}}))
{
<input type="submit" value="submit"/>
}

レンダリングするとき

<form action="/Home/Index" method="post"><input type="submit" value="submit"/>

これは RouteValueDictonary の実際の使用ですか。もしそうなら、HTML.BeginForm("About","Home") でこれを行うことができます

RouteValueDictonary の実際の使用方法を説明できる人がいますか。どんな助けでも大歓迎です。

4

2 に答える 2

16

ActionFilterAttributeこれは、リダイレクト目的で を実装する場合にも役立ちます。このクラスの基本的な使用法は、Action名前、ControllerName およびAreaNameを定義することです。

public class MyActionFilter : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filtercontext)
    {
        filtercontext.Result = new RedirectToRouteResult
            (
                new RouteValueDictionary
                    (
                        new
                        {
                            controller = "ControllerName",
                            action = "ActionName",
                            area = "AreaName"
                        }
                    )
            );
        base.OnResultExecuting(filtercontext);
    }
}

以下のようにパラメータリストを送信することもできます..

filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                        {
                            {"action", "ActionName"},
                            {"controller", "ControllerName"},
                            {"area", "Area Name"},
                            {"Parameter Name","Parameter Value"}
                        });
于 2013-08-08T13:00:32.043 に答える
6

ルート値ディクショナリは、フォームの POST 先の場所を柔軟に定義できるようにするだけです。誰もがコントローラー/アクションで止まるわけではありません。たとえば、フォームを に投稿したいとしましょう/Area/Controller/FormProcessor/Action/Parameter1/Parameter2Html.BeginForm("Action", "Controller")単純な方法 ではこれを行うことができません。

于 2013-08-08T12:57:00.963 に答える