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"/>

这是RouteValueDictionary的实际使用吗?如果是这样,我可以通过 HTML.BeginForm("About","Home")

有人能解释一下RouteValueDictionary的实际使用吗?任何帮助将不胜感激。

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

路由值字典只是允许灵活地定义表单将发布到的位置。不是每个人都停留在控制器/动作上。例如,假设我希望我的表单发布到/Area/Controller/FormProcessor/Action/Parameter1/Parameter2. 我不能通过使用简单的Html.BeginForm("Action", "Controller")方法来做到这一点。

于 2013-08-08T12:57:00.963 回答