Как передать значения из контроллера для просмотра в 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".