Có cách nào để tạo và sử dụng các thuộc tính động cho ViewBag, dựa trên chuỗi không?Tạo thuộc tính ViewBag dựa trên chuỗi
Something như
ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
Cảm ơn bạn
Có cách nào để tạo và sử dụng các thuộc tính động cho ViewBag, dựa trên chuỗi không?Tạo thuộc tính ViewBag dựa trên chuỗi
Something như
ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
Cảm ơn bạn
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);
}
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);
}
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
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ảm ơn bạn! Việc này mất nhiều thời gian để tìm. –
cảm ơn bạn đã giải thích mối quan hệ giữa ViewBag và ViewData – anIBMer
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