你可以在ASP.NET MVC中重载控制器方法吗?
我很好奇你是否可以在ASP.NET MVC中重载控制器方法。 每当我尝试,我都会得到下面的错误。 这两种方法接受不同的论点。 这是不能做到的吗?
当前在控制器类型“MyController”上的操作“MyMethod”请求在以下操作方法之间不明确:
如果你想让代码重载,你可以使用这个属性。
[ActionName("MyOverloadedName")]
但是,你必须为同一个http方法使用不同的动作名称(正如其他人所说的那样)。 所以这只是语义。 你想在你的代码或你的属性中拥有这个名字吗?
Phil有一篇与此相关的文章:http://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspx
是。 我已经能够通过将每个控制器方法的HttpGet
/ HttpPost
(或等价的AcceptVerbs
属性)设置为不同的东西,即HttpGet
或HttpPost
,但不是两者。 这样它可以根据请求的类型来判断使用哪种方法。
[HttpGet]
public ActionResult Show()
{
...
}
[HttpPost]
public ActionResult Show( string userName )
{
...
}
我的一个建议是,对于这种情况,应该有一个私有实现,这两个公共Action方法都依赖它来避免重复代码。
这是你可以做的其他事情......你需要一个能够有一个参数而不是一个参数的方法。
为什么不试试这个...
public ActionResult Show( string username = null )
{
...
}
这对我来说很有效......在这个方法中,你可以测试你是否有传入的参数。
已更新,以删除字符串上无效的可空语法并使用默认参数值。 链接地址: http://www.djcxy.com/p/48123.html