как заполнить частичный вид для отображения на каждой странице - PullRequest
1 голос
/ 16 мая 2011

Это, вероятно, глупый вопрос, но я пытаюсь выяснить, как заполнить ViewModel для частичного представления, которое отображает зарегистрированных пользователей DisplayName. Это частичное представление находится в основном макете, поэтому оно будет на каждой странице. Звучит просто, я знаю; Однако я не могу найти лучший способ получить данные для просмотра. Как мне сохранить эту точку зрения?

Ответы [ 2 ]

3 голосов
/ 16 мая 2011

Лучше всего, вероятно, использовать дочерние действия вместе с помощником Html.Action .

Так что, как всегда, в ASP.NET MVC вы начинаете с модели представления, которая будет представлятьинформация, которой вы готовы манипулировать / отображать в виде:

public class UserViewModel
{
    public string FullName { get; set; }
}

, затем контроллер:

public class UsersController: Controller
{
    // TODO: usual constructor injection here for
    // a repository, etc, ..., omitted for simplicity

    public ActionResult Index()
    {
        var name = string.Empty;
        if (User.Identity.IsAuthenticated)
        {
            name = _repository.GetFullName(User.Identity.Name);
        }
        var model = new UserViewModel
        {
            FullName = name
        };
        return PartialView(model);
    }
}

соответствующий частичный вид:

@model UserViewModel
{
    // Just to make sure that someone doesn't modify
    // the controller code and returns a View instead of
    // a PartialView in the action because in this case
    // a StackOverflowException will be thrown (if the child action
    // is part of the layout)
    Layout = null; 
}
<div>Hello @Model.FullName</div>

, затем перейтивпереди вашего _Layout и включите это действие:

@Html.Action("Index", "Users")

Очевидно, что следующим улучшением этого кода будет предотвращение попадания в базу данных при каждом запросе, но сохранение этой информации где-то, когда пользователь входит в систему, как она будет присутствоватьна всех страницах.Отличными местами для этого являются, например, часть userData зашифрованного cookie аутентификации (если вы, конечно, используете FormsAuthentication), Session, ...

0 голосов
/ 16 мая 2011

Вы можете посмотреть на метод дочерних действий.

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