我在我的项目中使用 RouteAttributes,它们工作正常,但在这种情况下除外:我有两个类似的操作,一个接受两个 int 参数,另一个只接受一个。
第一个接受两个参数并使用它们加载一个对象并将其传递给视图;第二个只是试图找到第二个变量的默认值,并重定向到第一个动作,传递两个变量。
问题是ActionResultExample(int idVar1)
,我希望被重定向到ControllerExample/Edit/idVar1/Brands/idVar2
;但是我被重定向到ControllerExample/Edit/idVar1/Brands?idVar2=idVar2
. 当然,这会产生一个无限重定向循环。
这是示例代码:
[Route("ControllerExample/Edit/{idVar1}/Brands/{idVar2}")]
public ActionResult ActionResultExample(int idVar1, int idVar2)
{
var objectForView= ObjectController.Get(idVar1, idVar2);
return View("ActionResultExample", objectForView);
}
[Route("ControllerExample/Edit/{idVar1}/Brands")]
public ActionResult ActionResultExample(int idVar1)
{
...
var idVar2 = getDefaultVar2();
return RedirectToAction("ActionResultExample", //redirects to ControllerExample/Edit/idVar1/Brands?idVar2=idVar2 instead of ControllerExample/Edit/idVar1/Brands/idVar2
new {idVar1= idVar1, idVar2 = idVar2 });
}