0

我正在使用 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

请问我做错了什么?

4

3 回答 3

4

您需要在 else 语句中返回:

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

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

于 2013-11-01T15:26:21.243 回答
3

你的声明else没有返回ActionResult

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

于 2013-11-01T15:26:40.240 回答
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)
于 2013-11-01T15:27:25.810 回答