0
我想在抛出AmbiguousMatchException时抛出它,然后编写一些代码来解决它。例如,我有一个操作ChangePassword,只有当用户登录时才应该调用它。我有另一个方法RenewPassword,如果用户没有登录,则必须调用它。我已经为这两个方法提供了相同的操作名称。捕获并解析AmbiguousMatchException
[HttpPost]
[ActionName("ChangePassword")]
public ActionResult RenewPassword(ChangePasswordModel model)
{
...
}
[Authorize]
[HttpPost]
[ActionName("ChangePassword")]
public ActionResult ChangePassword(ChangePasswordModel model)
{
...
}
我想使用相同的动作名称,因为我不想让视图不必担心要调用哪个动作。我知道我可以编写一个自定义的FilterAttribute,它将完成AuthorizeAttribute所做的相反操作,将其应用于RenewPassword方法,从而解决歧义问题。但是,这对于一个非常简单的需求来说似乎太多了。
有什么更好的点子?有没有内建的方式可以说只对匿名用户执行特定操作,对于登录用户而言,不是?
好的建议。这确实需要额外的助手,这与额外的FilterAttribute一样麻烦。我希望有一个基于优先权的歧义解决机制。在不明确的情况下,应该选择最高优先级的匹配。 – 2011-02-15 04:02:57