@{
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(“关于”,“主页”)
来做到这一点有人可以解释RouteValueDictonary的实际用途。 任何帮助将不胜感激。
答案 0 :(得分:13)
在为重定向实现ActionFilterAttribute
时,这也很有用。此类的基本用法是定义Action
名称,Controller
名称和Area
名称
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"}
});
答案 1 :(得分:4)
路由值字典只允许灵活地定义表单POST的位置。不是每个人都停在控制器/行动。例如,假设我希望我的表单发布到/Area/Controller/FormProcessor/Action/Parameter1/Parameter2
。我不能通过使用简单的Html.BeginForm("Action", "Controller")
方法来做到这一点。