0

我有两种方法:

public ActionResult Index(int? id)
{
    return Redirect("/View/" + this.GetMenuItems().First().Id);
}

public ActionResult Index(int id, uint? limit)
{

当我去/View/1 - 我得到那个错误

当前对控制器类型“ViewController”的操作“索引”请求在以下操作方法之间不明确:1[System.Int32]) on type SVNViewer.Controllers.ViewController System.Web.Mvc.ActionResult Index(Int32, System.NullableSVNViewer.Controllers.ViewController 类型上的 System.Web.Mvc.ActionResult Index(System.Nullable 1[System.UInt32])

我需要这两种方法,但删除不明确的错误,我该怎么做?

4

3 回答 3

2

将您的第二个 Action 更改为不具有可为空的 uint。

public ActionResult Index(int id, uint limit)

如果限制为空,您Index(int? id)应该是处理的方法。

于 2012-10-11T14:09:35.060 回答
2

您可以使用 ActionName 来解决此问题:Purpose of ActionName

如果两者都做同样的事情,你可以这样做:

public ActionResult Index(int? id, uint? limit = null)
{
  ...
}

使第二个参数可选。

或者让一个具有 [HttpGet] 属性,一个具有 [HttpPost],如果一个响应获取,另一个响应发布的表单。

于 2012-10-11T14:09:53.527 回答
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}
}
于 2012-10-11T14:15:30.070 回答