powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / как показать данные пользователя на каждой странице MVC3
10 сообщений из 10, страница 1 из 1
как показать данные пользователя на каждой странице MVC3
    #37651396
mvc_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть интранет приложение с Windows аутентификацией, по доменному имени пользователя посредством вызова сервиса пользователей можно получить дополнительную информацию, надо вывести ее на каждой странице приложения, например в шапке.

Как правильно это сделать в MVC3? Для каждого вызова контроллеров не хочется дублировать запрос пользовательских данных у сервиса пользователей, с другой стороны перегружать у базового контроллера событие onActionExecuting тоже не совсем верно, так как часть вызовов - ajax и там запрашивать пользовательские данные не надо.

Может как то можно получить инстанс сервиса пользователей в partial view?

Сорри если вопрос дилетантский, c MVC только знакомлюсь.
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651453
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mvc_new_userКак правильно это сделать в MVC3?

А Master Page вам на что?
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651665
mvc_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavluha,

можете пояснить?

видимо я неправильно вас понял. Попробовал так:

_layout.cshtml

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@using XXX.Services
@{

    // создать инстанс c помощью spring.net
    public EmployeeService EmployeeService { get; set; } // ошибка компиляции, видимо так объявлять в представлении нельзя

    var u = EmployeeService.GetEmployeeByLogOn(User.Identity.Name);
    if (u != null)
    {
        ViewBag.UserName = u.LastFirstName;
    }
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
....

           <div id="logindisplay">
                Welcome <strong>@ViewBag.UserName</strong>!
            </div>
....
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651706
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvc_new_user,

Ощущение что вы только сегодня узнали что такое MVC.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@using XXX.Services
@{

    // создать инстанс c помощью spring.net
    public EmployeeService EmployeeService { get; set; } // ошибка компиляции, видимо так объявлять в представлении нельзя

    var u = EmployeeService.GetEmployeeByLogOn(User.Identity.Name);
    if (u != null)
    {
        ViewBag.UserName = u.LastFirstName;
    }
}



Должно быть в контроллере, представление должно быть "тупым" - по возможности только показывать то, что ей вернет контроллер.
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651713
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
public EmployeeService EmployeeService { get; set; } // ошибка компиляции, видимо так объявлять в представлении нельзя



если это не поле класса, то конечно нельзя. Вам бы учебник.
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651756
mvc_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OracleLover
Код: c#
1.
public EmployeeService EmployeeService { get; set; } // ошибка компиляции, видимо так объявлять в представлении нельзя



если это не поле класса, то конечно нельзя. Вам бы учебник.

Да, практически сегодня :)) Просто не понял что предлагает Pavluha.

OracleLoverДолжно быть в контроллере, представление должно быть "тупым" - по возможности только показывать то, что ей вернет контроллер.


Изначально так и сделал:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class HomeController : Controller
    {
        public EmployeeService EmployeeService { get; set; }

        public ActionResult Index()
        {
            ViewBag.User = EmployeeService.GetEmployeeByLogOn(User.Identity.Name).FirstLastName; // дублирование
            //....
            return View();
        }
       
         // ...

        public ActionResult About()
        {
            ViewBag.User = EmployeeService.GetEmployeeByLogOn(User.Identity.Name).FirstLastName;  // дублирование
            //....
            return View();
        }
    }



Не нравится дублирование кода (, пользовательские данные должны быть на каждой странице приложения. Как сделать правильно?

PS ajax-ом из _layout.cshtml?
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651781
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mvc_new_user,

вы в курсе что такое Master Page?
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651841
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvc_new_userOracleLover
Код: c#
1.
public EmployeeService EmployeeService { get; set; } // ошибка компиляции, видимо так объявлять в представлении нельзя



если это не поле класса, то конечно нельзя. Вам бы учебник.

Да, практически сегодня :)) Просто не понял что предлагает Pavluha.

OracleLoverДолжно быть в контроллере, представление должно быть "тупым" - по возможности только показывать то, что ей вернет контроллер.


Изначально так и сделал:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class HomeController : Controller
    {
        public EmployeeService EmployeeService { get; set; }

        public ActionResult Index()
        {
            ViewBag.User = EmployeeService.GetEmployeeByLogOn(User.Identity.Name).FirstLastName; // дублирование
            //....
            return View();
        }
       
         // ...

        public ActionResult About()
        {
            ViewBag.User = EmployeeService.GetEmployeeByLogOn(User.Identity.Name).FirstLastName;  // дублирование
            //....
            return View();
        }
    }



Не нравится дублирование кода (, пользовательские данные должны быть на каждой странице приложения. Как сделать правильно?

PS ajax-ом из _layout.cshtml?

зачем дублирование? Вон же вы уже получиои своего юзера и даже в багажник положили. А в лэйауте уже где хотете отображайте своего пользователя посредством
Код: c#
1.
@ViewBag.User
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651872
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет как то можно получить инстанс сервиса пользователей в partial view?

Чтобы не создавать MasterPage, вы можете создать нечто вроде GetUser.cshtml, в котором будет только
Код: html
1.
@ViewBag.User



И создать контроллер с одним методом
Код: c#
1.
2.
3.
4.
5.
6.
public ActionResult GetUser()
        {
            ViewBag.User = EmployeeService.GetEmployeeByLogOn(User.Identity.Name).FirstLastName; 
            //....
            return PartialView();
        }



А в _Layout.cshtml прописать
Код: html
1.
@Html.RenderAction(<Контроллер>, "GetUser");
...
Рейтинг: 0 / 0
как показать данные пользователя на каждой странице MVC3
    #37651952
mvc_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OracleLover, Pavluha, няка

спасибо большое, прояснили.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / как показать данные пользователя на каждой странице MVC3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]