在我的ASP.NET MVC应用程序中,我想使用this ASP.NET MVC Attribute Based Route Mapper,首先宣布here。
到目前为止,我了解如何实现使用它的代码,但我遇到了一些问题,我认为过去使用过这种基于属性的路由映射器的人将能够回答。
HTTP POST
的ActionResults?换句话说,它如何与表单提交等一起使用?我应该只放入GET
方法的网址,还是应该使用GET
方法网址而不使用任何参数(如HTTP POST
中没有通过网址传入)? /controller/action?id=value
而不是/controller/action/{id}
等路线?提前致谢。
答案 0 :(得分:1)
如何将其与ActionResults一起使用 适用于HTTP POST?
您使用[HttpPost]
属性装饰要发布到的操作:
[Url("")]
public ActionResult Index() { return View(); }
[Url("")]
[HttpPost]
public ActionResult Index(string id) { return View(); }
如果您决定为POST操作指定其他名称:
[Url("")]
public ActionResult Index() { return View(); }
[Url("foo")]
[HttpPost]
public ActionResult Index(string id) { return View(); }
您需要在辅助方法中提供此名称:
<% using (Html.BeginForm("foo", "home", new { id = "123" })) { %>
如何将其与“URL查询字符串”一起使用 参数“?
查询字符串参数不是路由定义的一部分。您始终可以在控制器操作中将其作为操作参数或从Request.Params
获取。
就id
参数而言,它是在Application_Start
中配置的,因此如果您希望它出现在查询字符串中而不是路由的一部分,只需将其从此路由定义中删除:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoutes();
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" }
);
}