2011-10-29 69 views

Trả lời

45

Tôi chỉ phát hiện ra rằng ViewData thể được sử dụng để tạo ra tài sản đó cho ViewBag

Vì vậy, để tạo CityErrorMessage tài sản tôi phải sử dụng

ViewData.Add("CityErrorMessage", MyErrorMessage) 

và sau đó trong chế độ xem tôi có thể sử dụng

@ViewBag.CityErrorMessage 

EDIT:

Tôi tạo ra thuộc tính của ViewBag động, bởi vì tôi đã nhận được tên của trường với xác nhận lỗi trong một danh sách

Vì vậy, các mã thực sự là

foreach (ValidationError err in ValidationErrors) 
{ 
    ViewData.Add(
     string.format("{0}ErrorMsg", err.PropertyName), 
     err.ValidationErrorMessage); 
} 
+0

Cảm ơn bạn! Việc này mất nhiều thời gian để tìm. –

+0

cảm ơn bạn đã giải thích mối quan hệ giữa ViewBag và ViewData – anIBMer

+2

Cần lưu ý rằng bạn có thể sử dụng 'ViewData [" NameHere "]' để tự động nhận giá trị của các mục bạn đã lưu trữ. – Matty

-3

Cập nhật: Tôi muộn màng nhận ra rằng mã này xuất phát từ một dự án Nancy và Nancy triển khai ViewBag của riêng nó để mã này không hoạt động với .Net M VC3 và không trả lời câu hỏi. Tuy nhiên, có thể lập luận rằng câu hỏi có thể được giải quyết bằng cách chuyển sang Nancy.

tôi thấy ViewBag có một phương pháp Add để bạn có thể làm điều này:

foreach(var row in model) 
      { 
       ViewBag.Add(row.resourceName, row.content); 
      } 
+0

Ngoại lệ được ném: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' trong Microsoft.CSharp.dll Thông tin bổ sung: 'System.Dynamic.DynamicObject' không chứa định nghĩa cho 'Thêm' – JEuvin

+0

Tôi sẽ kiểm tra dự án tôi có với mã hoạt động. Có vẻ như những người khác không thể tái tạo nó. –

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