如何在asp.net中将值从控制器传递到视图?

时间:2012-01-06 04:24:00

标签: c# asp.net-mvc asp.net-mvc-3

我正在开发一个应用程序,我需要将username的值从控制器传递给视图。 我尝试了http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx

中给出的ViewData

我在控制器中的代码是

public ActionResult Index(string UserName, string Password)
{
        ViewData["UserName"] = UserName;
        return View();
}

其中从其他表单获取用户名和密码。

视图中的代码是

@{
    ViewBag.Title = "Index";  
}
<h2>Index</h2>
<%= ViewData["UserName"] %>

但是当我运行此代码时,显示屏显示&lt;%= ViewData [“UserName”]%&gt;而不是实际的用户名,例如“XYZ”。

我应该如何显示实际的用户名?

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:12)

你在这里使用的是razor语法,但是你试图将它与旧的asp.net语法混合使用

@ViewData["UserName"] 

代替

此外,通常您不会使用视图包将数据传递给视图。标准做法是创建一个模型(标准类),其中包含View(页面)所需的所有数据位,然后将该模型传递给控制器​​的视图(返回View(myModel);)

为此,您还需要声明您在视图中使用的模型类型

@model Full.Namespace.To.Your.MyModel

阅读http://msdn.microsoft.com/en-us/gg618479了解基本的mvc模型教程

答案 1 :(得分:6)

您似乎正在使用Razor View Engine而不是Web窗体视图引擎。请尝试以下方法:

@{ 
    ViewBag.Title = "Index";   
} 
<h2>Index</h2> 
@ViewData["UserName"]

答案 2 :(得分:0)

'ViewBag'是MVC2的延续。 MVC3开发应该使用强类型的“ViewModel”。