c # бритва actionresult параметр - PullRequest
0 голосов
/ 03 июня 2011

Я совершенно новичок в mvc razor, поэтому, пожалуйста, извините, что я не знаком с этим вопросом Если я правильно понял, это контроллер, который получает параметр url, например:

  // Get: /User/23
  public ActionResult(int? id) { 
       return View("User", id);
  }

Таким образом, этот ActionResult получает параметр в URL и отправляет его куда-нибудь. Но где?

Также, скажем, у меня есть хранилище, в котором я возвращаю всех пользователей в классе IQueryable<>. Если идентификатор не является нулевым, он получает только соответствующий результат, если нет, он получает весь список. Поэтому я хотел бы вернуть список в представление и показать результаты. Как я могу это сделать? Для облегчения понимания приведу следующий пример:

// I want to populate this list based on the id in the actionresult
@foreach(var u in MyList) { 
   name: @u.Name <br>
   lastname: @u.LastName <hr>
}

Ответы [ 2 ]

1 голос
/ 03 июня 2011

return View вызывает вспомогательный метод в базовом классе, Controller.

Возвращается ViewResult, с параметром, являющимся моделью, переданной в представление.

Итак, если вы хотите просмотреть список пользователей, вы должны сделать это:

public ActionResult Users()
{
   var users = _repository.FindAllUsers();
   return View(users);
}

Обратите внимание, как я пропустил имя представления, поэтому соглашение по умолчанию будет искать представление на основе имени действия, в данном случае Users.cshtml. Всегда старайтесь использовать соглашение по конфигурации - это то, что делает MVC великолепным.

@model IEnumerable<YourApp.Models.User>
@Html.DisplayForModel()

Shared \ DisplayTemplates \ User.cshtml

@Html.LabelFor(model => model.Name)
@Html.DisplayFor(model => model.Name)
@Html.LabelFor(model => model.LastName)
@Html.DisplayFor(model => model.LastName)

Обратите внимание, что я не использовал цикл foreach - я использую свой собственный шаблон отображения, опять же - соглашение о конфигурации.

1 голос
/ 03 июня 2011

Все, что вы возвращаете в качестве второго параметра, является моделью, передаваемой в представление. Затем вы могли бы наследовать страницу бритвы в WebViewPage, или, лучше, использовать ключевое слово @model. Переданные данные доступны на странице через переменную «Модель».

Хороший пример использования после этого на http://weblogs.asp.net/scottgu/archive/2010/10/19/asp-net-mvc-3-new-model-directive-support-in-razor.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...