2010-01-13 37 views

回答

0

1)是的。 2)他们会如何匹配?这两个例子都是你的名字。

+0

我想他们可能匹配基础上的位置,但显然这不可能。我将不得不认为这一个通过... – Ben 2010-01-13 14:50:57

0

不,当你创建自己的defaultmodelbinder和/或controlleractioninvoker

+0

不,它比这更复杂。您尚未考虑操作方法选择器。回想一下,行为可能超载;如果多个操作的参数不同,多个操作可以具有相同的名称。 *能*绑定参数并不意味着你*应该* - 你可以有多个相同类型的参数。然后你必须问:询问请求中的行为是否有效时,应考虑请求中的哪些标记(QSP,表单密钥,服务器变量等)。就像我说的那样,那个名字就是你的全部名字。这是唯一在路线*和*中的行为。 – 2010-01-13 15:24:46

+0

动作方法选择器位于控制分段调用器中,可以更改为不依赖于路径值中的“动作”值。我实际上已经完成了这个复杂但有用的目的,它的工作原理。 – Paco 2010-01-13 16:28:15

+0

简而言之:你可以用*重大努力将“匹配”重新定义为除“等于”之外的其他含义,但*不要欺骗自己:*无论你如何做到这一点。 – 2010-01-13 16:28:19

0

是,bacause约定(在配置)。以这种方式开发应用程序更简单快捷:这就是ASP.NET MVC的强大功能。

+0

缺点是你必须对每个应用程序使用相同的约定。这些约定基于mvc框架创建者的意见,而不是基于您的或我的意见。只要约定是可配置的并且没有太多的意思,配置上的约定是理想的。在某些应用程序中,重写约定可能非常有用,这不容易,但可以完成。 – Paco 2010-01-13 16:30:50

+1

我认为在许多应用程序中进行转换是一种快速生成软件并且牢记架构的方法。你不用担心配置:Converntions给你一个优点:你需要考虑什么,而不是如何(做出同样的,可重复的事情)。 – Dariusz 2010-01-13 19:34:37

1

确实。将会扫描RouteData集合的“值”字典中的名称与参数名称相匹配的键/值对。

在下面的操作方法“月”参数会根据输入的URL路径的{月}部分自动填充:

public ActionResult Index(string month) { 
    if(month == "1") 
     //Happy New Year! 
} 
相关问题