在mvc3中传递参数

时间:2012-07-05 05:36:26

标签: asp.net-mvc-3 razor

public ActionResult Index()
{
    Queries q1 = new Queries();
    return View(q1);
}

public ActionResult Index(string id)
{
    Queries q1 = new Queries(id);
    return View(q1);
}

public ActionResult Select(string id)
{
    return RedirectToAction("Index",id);
}

出了什么问题......

它说: 控制器类型'CompanyController'上的当前操作请求'Index'在以下操作方法之间不明确: System.Web.Mvc.ActionResult类型为LookUpForm.Controllers.CompanyController的索引() LookUpForm.Controllers.CompanyController类型的System.Web.Mvc.ActionResult索引(System.String)

由于动作索引没有参数而其他参数有字符串参数,我认为它必须有效。

2 个答案:

答案 0 :(得分:1)

即使采用不同的参数,也不能在同一控制器上使用相同的名称执行2个操作。消除歧义的唯一方法是使用不同的HTTP动词:

public ActionResult Index()
{
    Queries q1 = new Queries();
    return View(q1);
}

[HttpPost]
public ActionResult Index(string id)
{
    Queries q1 = new Queries(id);
    return View(q1);
}

或者如果需要使用GET动词访问这两个动作,您必须找到不同的名称或写一个custom action selector

答案 1 :(得分:0)

只有当他们的httpmethods不同,即HttpGet或HttpPost

时,才能让动作超载