我有两种方法:
public ActionResult Index(int? id)
{
return Redirect("/View/" + this.GetMenuItems().First().Id);
}
public ActionResult Index(int id, uint? limit)
{
当我去 / View / 1 时 - 我收到了该错误
他对控制器类型'ViewController'的当前操作请求'Index'在以下操作方法之间是不明确的:
System.Web.Mvc.ActionResult索引(System.Nullable 1[System.Int32]) on type SVNViewer.Controllers.ViewController
System.Web.Mvc.ActionResult Index(Int32, System.Nullable
1 [System.UInt32])类型SVNViewer.Controllers.ViewController
我需要这两种方法但删除不明确的错误,我该怎么做?
答案 0 :(得分:2)
将您的第二个动作更改为没有可以为空的uint。
public ActionResult Index(int id, uint limit)
如果limit为null,则Index(int? id)
应该是处理的方法。
答案 1 :(得分:2)
您可以使用ActionName解决此问题:Purpose of ActionName
如果两者都做同样的事情,你可以改为:
public ActionResult Index(int? id, uint? limit = null)
{
...
}
使第二个参数可选。
或者有一个[HttpGet]属性,一个有[HttpPost],如果一个响应一个get而另一个响应一个已发布的表单。
答案 2 :(得分:1)
您可以创建一个模型并只有一个操作方法:
public class MyActionModel
{
public int? Id { get;set; }
public int? Limit { get;set; }
}
然后在你的控制器中:
public ActionResult Index(MyActionModel model)
{
// Your code here
if (model.Id.HasValue() { // do something....etc}
}