0

我已经使用 ASP.NET MVC 工作了 8 个月。我知道基本的路由以及它是如何工作的,但我心中没有几个问题。

首先,我必须解释一下我所知道的,对吧?因此,例如在下面的路由中,我知道模式及其工作原理。

routes.MapRoute(
 "Categories",
 "category/{CategoryName}",
/*If I use 'mysite.com/category/anything'  
it will look into the 'News' controller and 
then Category action with the given 
parameter('anything') in the category 
action's with the same name parameter. 
EG. public ActionResult Category(Anytype CategoryName) { ... }
*/
 new { controller = "News", action = "Category", CategoryName = "" },
 new string[] { "MyProj.Controllers" } //it is for specifying specific 
//Namespace, mostly used for distinguishing between area routing and regular routing
    );

现在如果在上面的例子中我有类似的方法

public ActionResult Category(Anytype CategoryName2)

上面的路线不起作用,因为参数名称不匹配。但是,如果我将类别操作中的表单提交到同名操作,例如:

[HttpPOST]
public ActionResult Category(ModelType Anyname){...}

它工作得很好。但是,如果我从其他地方提交表格,它会起作用吗?

另一件事,当我们使用 [HttpGET] 注解时,它可以接收任何参数,没有限制,那么为什么只限制非动作动词注解的动作呢?谁能简要解释一下这个事实?

例如,我的这篇文章可以帮助我理解我的意思。我终于改变了路线以使其工作。

是否可以/正确在一页中以 2 种不同形式使用多个 @Html.AntiForgeryToken()?

谢谢大家。

4

1 回答 1

0

替换这个:

public ActionResult Category(Anytype CategoryName2)

public ActionResult Category(Anytype CategoryName)

这是因为您在路由中指定了名称为“CategoryName”的参数,并且您使用的是“CategoryName2”。

于 2012-09-10T17:20:01.407 回答