1

我有两个 ASP.NET MVC 操作:

public ActionResult GetAll()
{
      return GetOne(1);
}

public ActionResult GetOne(Int32 id)
{
      return View(id);
}

如您所见,GetAll 正在调用操作 GetOne。但是,当调用 GetAll()(调用 GetOne(id) 并且应该返回 GetOne 视图)时,MVC 会抛出一个错误,指出没有 GetAll 视图。嗯?

我怎样才能让 GetAll 调用 GetOne 并使用 GetOne 的视图(我认为这是一开始就发生的合乎逻辑的事情)?

4

2 回答 2

6
public ActionResult GetOne(Int32 id)
{
      return View(id, "GetOne");
}

显式指定视图名称会覆盖默认值,即使用路由值集合中的操作键,在这种情况下等于“GetAll”。

于 2009-09-16T20:37:11.937 回答
1

ASP.NET MVC 与许多 MVC 框架一样,根据约定做出了很多假设。如果您不遵守他们的约定,您将需要做更多的工作。在这种情况下,约定是它们是与您的操作同名的视图,位于与您的控制器名称对应的文件夹中。

如果您的控制器是 UsersController,并且您的操作是 GetAll,它希望找到视图 Views/Users/GetAll。

如果要返回与不同操作对应的视图,则需要指定(而不是使用默认值):

return View(id, "GetOne")
于 2009-09-16T20:38:30.417 回答