Как передать значения из контроллера для просмотра в asp.net?
Я разрабатываю приложение, в котором мне нужно передать значение имени пользователя из контроллера в представление.
я попробовал ViewData, как указано в http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx
Мой код в контроллере
public ActionResult Index(string UserName, string Password)
{
ViewData["UserName"] = UserName;
return View();
}
где имя пользователя и пароль получены из другой формы.
И код в представлении
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<%= ViewData["UserName"] %>
Но когда я запускаю этот код, на дисплее отображается <% = ViewData [ "UserName" ]% > вместо фактического имени пользователя, например, "XYZ".
Как отобразить фактическое имя пользователя?
Заранее спасибо за вашу помощь.
Ответы
Ответ 1
Здесь используется синтаксис бритвы, но вы пытаетесь смешать его со старым синтаксисом asp.net, используйте
@ViewData["UserName"]
вместо
Кроме того, обычно вы не будете использовать сумку просмотра для передачи данных в представление. Стандартная практика заключается в создании модели (стандартного класса) со всеми битами данных, которые хочет просмотреть (страница), затем передать эту модель в представление из вашего контроллера (return View (myModel);)
Для этого вам также нужно объявить тип модели, которую вы используете в своем представлении
@model Full.Namespace.To.Your.MyModel
читайте http://msdn.microsoft.com/en-us/gg618479 для основного учебника по моделям mvc
Ответ 2
Похоже, что вы используете механизм просмотра Razor, а не механизм просмотра веб-форм. Вместо этого попробуйте следующее:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@ViewData["UserName"]
Ответ 3
"ViewBag" - это удержание MVC2. Разработка MVC3 должна использовать строго типизированные "ViewModel".