返回首页

介绍
ASP.NET MVC框架如何调用行动的默认路由算法是像{控制器} / {行动} / {id}的模式。
但是,这变得更加复杂,当你有两种方法具有相同的名称,或当你调用一个动作时,提交表单数据,或执行,只有当一个AJAX请求的方法。实施
{S0的}
这是可以做到使用ActionMethodSelector属性。我们一般使用方法选择,如:AcceptVerbsActionNameAcceptVerbs
这个属性是用来当我们要执行一些动作,比如POST执行一个特定的HTTP操作时,获取,删除等,例如:

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Create(Employee employee)

{

      // To Do Code Here

}

上面的方法是一个HTTP POST操作执行时执行。AcceptName
这个属性是用来当你暴露动作名称与比其方法名称不同的名称,或您可以使用动作名称属性暴露与行动具有不同名称的相同名称的两个方法。例如:{C}自定义操作方法选择
您可以建立从抽象的派生自己的ActionMethodSelector属性ActionMethodSelectorAttribute类。
这是一个非常简单的类,你只需要覆盖的方法IsValidForRequest()。如果返回false,此操作方法不被执行。
现在采取的自定义操作方法选择的一个简单的例子。开发一个ajaxmethod自定义属性有用的当你要执行一些行动当一个AJAX请求。
第一步是创建一个MVC应用程序。然后添加一个类文件名为AjaxMethod.cs继承,从ActionMethodSelectorAttribute类。然后覆盖名为IsValidForRequest()的方法。你的类看起来象下面这样:
public class AjaxMethod:ActionMethodSelectorAttribute

{

   public override bool IsValidForRequest(ControllerContext controllerContext, 

          System.Reflection.MethodInfo methodInfo)

   {

       return controllerContext.HttpContext.Request.IsAjaxRequest();

   }

}

在IsValidForReuest方法,我们检查的AJAX Request对象请求。
,现在我们可以用我们的控制器Ajaxmethod属性,当您要执行一些动作,只有当一个AJAX请求来。对于这一点,添加一个控制器名为NewsController到控制器的文件夹。在此控制器中,我们定义了两个指标的行动:第一个索引行动只执行当一个页面被调回,第二个动作是一个AJAX请求时调用。您的控制器看起来像下面:{体C3}
添加命名为显示消息的Index.aspx视图,并添加到下面的标记:{的C4}
现在运行的应用程序。你会发现,当页面加载的第一次第一个索引操作执行,当你按一下在当时GetNews的链接,"第二个索引操作执行。第一次,它会去检查Ajaxmethod属性,但IsValidForRequest方法将返回false,然后它会执行第一指数的行动,但是当你点击链接当时,IsValidForRequest返回true,并执行第二个动作。结论
一些定制的,但至少非常有用的扩展点,在ASP.NET MVC中的操作方法选择属性。但使用它们,我们可以使复杂的事情看似琐碎。

回答

评论会员:迪内希玛尼 时间:2012/02/07
!简单的解释,很好的例子,写得很好

我真的希望这篇文章给5 *,但由于某些原因,我无法向我的投票...我一定会稍后再试...
评论会员:JigarBagadai 时间:2012/02/07
感谢
评论会员:JigarBagadai 时间:2012/02/07
适合初学者的简短教程。只是想指出,你也可以用动词简写。例如:

{C5的}