我有两个ActionResults,一个接受一个参数,一个接受两个参数。当调用ActionResult传入一个参数时,我得到一个错误,即ActionResult在两者之间是不明确的。
为什么会这样?
public ActionResult Edit_ClockGroup(int id)
{
var vm = new ClockGroupViewModel();
vm = DAL.GetClockGroupDetail(id);
return View(vm);
}
public ActionResult Edit_ClockGroup(int id, int readerId)
{
var vm = new ClockGroupViewModel();
vm = DAL.GetClockGroupDetail(id, readerId);
return View(vm);
}
我想我可以使用带有两个参数的ActionResult,然后使用默认值设置可选参数但是据我所知,我试图理解为什么当有两个不同的ActionResults接受不同的参数时这会是不明确的?
答案 0 :(得分:1)
您遇到了路由冲突,因为很可能您使用的是基于默认约定的路由{controller}/{action}/{id}
,它可以匹配相关操作。
您需要唯一地区分这些操作以避免路由冲突。您可以更改操作名称或创建一个考虑所有必需参数的新路径。
答案 1 :(得分:1)
这似乎是一种丑陋的方式,但你可以将这两种行为结合起来
public ActionResult Edit_ClockGroup(int id, int? readerId = null)
{
var vm = readerId.HasValue
? DAL.GetClockGroupDetail(id, readerId)
: DAL.GetClockGroupDetail(id);
return View(vm);
}