Vấn đềLàm thế nào để có được một chìa khóa ModelState của một mục trong danh sách
Tôi có một danh sách các lĩnh vực mà người dùng có thể chỉnh sửa. Khi mô hình được gửi, tôi muốn kiểm tra xem các mục này có hợp lệ hay không. Tôi không thể sử dụng ký hiệu dữ liệu vì mỗi trường có một quy trình xác thực khác mà tôi sẽ không biết cho đến khi chạy. Nếu xác nhận không thành công, tôi sử dụng ModelState.AddModelError(string key, string error)
trong đó khóa là tên của phần tử html bạn muốn thêm thông báo lỗi vào. Vì có một danh sách các trường tên mà Razor tạo cho mục html giống như Fields[0].DisplayName
. Câu hỏi của tôi là có một phương pháp hoặc một cách để có được chìa khóa của tên html được tạo ra từ mô hình xem?
Đã cố gắng giải pháp
Tôi đã thử các phương pháp toString()
cho phím không có may mắn. Tôi cũng đã xem qua lớp HtmlHelper
nhưng tôi không thấy bất kỳ phương pháp hữu ích nào.
Code Snippet
Xem Mẫu
public class CreateFieldsModel
{
public TemplateCreateFieldsModel()
{
FreeFields = new List<FieldModel>();
}
[HiddenInput(DisplayValue=false)]
public int ID { get; set; }
public IList<TemplateFieldModel> FreeFields { get; set; }
public class TemplateFieldModel
{
[Display(Name="Dispay Name")]
public string DisplayName { get; set; }
[Required]
[Display(Name="Field")]
public int FieldTypeID { get; set; }
}
}
khiển
public ActionResult CreateFields(CreateFieldsModel model)
{
if (!ModelState.IsValid)
{
//Where do I get the key from the view model?
ModelState.AddModelError(model.FreeFields[0], "Test Error");
return View(model);
}
}
Điều này là tốt nhưng đã chỉ tìm thấy một bài đăng mà kết thúc tốt đẹp logic này trong một phương pháp mở rộng tốt đẹp: http://stackoverflow.com/a/12689563/1825109 – Michael12345