2012-01-06 29 views
10

Tôi đang phát triển một ứng dụng mà tôi cần phải chuyển giá trị của tên người dùng từ bộ điều khiển đến chế độ xem. tôi đã cố gắng ViewData như được đưa ra trong http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspxLàm thế nào để vượt qua các giá trị từ bộ điều khiển để xem trong asp.net?

Mã của tôi trong bộ điều khiển là

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

nơi tên người dùng và mật khẩu được lấy từ một hình thức khác.

Và mã trong giao diện là

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

Nhưng khi tôi chạy mã này, màn hình hiển thị <% = ViewData [ "UserName"]%> thay vì tên người dùng thực tế nói, ví dụ "XYZ ".

Tôi nên hiển thị UserName thực như thế nào?

Cảm ơn bạn rất nhiều trước sự giúp đỡ của bạn.

Trả lời

12

Bạn đang sử dụng cú pháp dao cạo ở đây nhưng bạn đang cố gắng để kết hợp nó với cú pháp asp.net cũ, sử dụng

@ViewData["UserName"] 

thay

Ngoài ra, thông thường bạn sẽ không sử dụng túi xem để chuyển dữ liệu vào chế độ xem. Tiêu chuẩn thực hành là tạo ra một mô hình (một lớp tiêu chuẩn) với tất cả các bit dữ liệu View (trang) của bạn muốn sau đó vượt qua mô hình đó để xem từ bộ điều khiển của bạn (return View (myModel);)

Để làm điều này bạn cũng cần phải khai báo các loại mô hình mà bạn đang sử dụng theo quan điểm của bạn

@model Full.Namespace.To.Your.MyModel 

đọc http://msdn.microsoft.com/en-us/gg618479 cho một mô hình MVC cơ bản hướng dẫn

6

có vẻ như bạn đang sử dụng Razor view Engine chứ không phải là Web Công cụ xem biểu mẫu. Thay vào đó, hãy thử các cách sau:

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

'ViewBag' là sự lưu giữ từ MVC2. Phát triển MVC3 nên sử dụng mạnh mẽ 'ViewModel's.

Các vấn đề liên quan