并非所有路径在重定向时都有价值

时间:2013-11-01 15:23:59

标签: c# asp.net-mvc asp.net-mvc-4

我正在使用mvc4

我的控制器中有一个方法。我希望这个方法将其用于另一个控制器中的另一个方法。我试过这个

public ActionResult Building(int buildingID) {
    if((buildingID == 0) || (buildingID<0))
        return HttpNotFound();
    else
        RedirectToRoute(new { controller = "Building", action = "details?id=" + buildingID });
}

但我得到了这个例外

not all paths have value

请问我做错了什么?

3 个答案:

答案 0 :(得分:4)

您需要在else语句中返回

return RedirectToRoute(new 
{ 
    controller = "Building", 
    action = "details", 
    id = buildingID 
});

另请注意,我将id作为匿名对象的一部分传递,而不是将其作为某个查询字符串参数硬编码到操作名称。

答案 1 :(得分:3)

else语句未返回ActionResult

RedirectToRoute(new { controller = "Building", action = "details?id=" + buildingID });不返回值。如果RedirectToRoute返回ActionResult,您只需在其前面添加return关键字即可使用它。

答案 2 :(得分:2)

return RedirectToRoute(new { controller = "Building", action = "details?id=" + buildingID });

另外,我认为你可以使用,但我需要仔细检查

return RedirectToAction("details", "Building", new { id = buildingID  });

此外,您可以更改此行(仅用于清理代码)...

if((buildingID == 0) || (buildingID<0))

要..

if(buildingID < 1)