ASP.NET MVC View Проблема при возврате ActionResult из другого действия - PullRequest
1 голос
/ 17 сентября 2009

У меня есть два действия ASP.NET MVC:

</p> <pre><code>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 (которое, как я думал, было логичным для начала)?

Ответы [ 2 ]

6 голосов
/ 17 сентября 2009
public ActionResult GetOne(Int32 id)
{
      return View(id, "GetOne");
}

Указание имени представления явно переопределяет значение по умолчанию, то есть ключ действия в коллекции значений маршрута, который в данном случае равен «GetAll».

1 голос
/ 17 сентября 2009

ASP.NET MVC, как и многие MVC-фреймворки, делает много предположений, основанных на соглашении. Если вы не будете следовать их правилам, у вас будет немного больше работы. В этом случае существует соглашение о том, что это представление с тем же именем, что и ваше действие, в папке, соответствующей имени вашего контроллера.

Если вашим контроллером является UsersController, а вашим действием является GetAll, он ожидает найти представление Views / Users / GetAll.

Если вы хотите вернуть представление, соответствующее другому действию, вам нужно указать это (вместо использования по умолчанию):

return View(id, "GetOne")
...