2012-01-06 122 views
10

我正在開發一個應用程序,我需要將用戶名的值從控制器傳遞到視圖。 我試圖的ViewData如http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx如何從控制器傳遞值以在asp.net中查看?

我在控制器代碼中給出是

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

其中從另一形式獲得用戶名和密碼。

而在視圖中的代碼是

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

但是當我運行該代碼時,顯示屏顯示<%=計算機[「用戶名」]%>而不是實際的用戶名說,例如「XYZ 」。

我應該如何顯示實際的用戶名?

非常感謝您的幫助。

回答

12

你在這裏使用剃刀語法,但你試圖把它與老asp.net的語法搭配,使用

@ViewData["UserName"] 

代替

而且,通常你會不會使用該視圖袋將數據傳遞給視圖。標準做法是創建一個模型(標準類),其中包含View(頁面)所需的所有數據位,然後將該模型傳遞到控制器的視圖(返回View(myModel);)

要做到這一點你還需要聲明模型的類型你使用在你看來

@model Full.Namespace.To.Your.MyModel 

http://msdn.microsoft.com/en-us/gg618479一個基本的MVC模型教程

6

看來,您使用的Razor視圖引擎,而不是網頁表單視圖引擎。嘗試改爲:

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

'ViewBag'是MVC2的延緩。 MVC3開發應該使用強類型的'ViewModel'。

相關問題