Tôi có một trường bắt buộc, thuộc tính chuỗi {get; set} trong một lớp và muốn đặt giá trị của nó trong dao cạo. Là một cái gì đó như sau đây có thể?Cách đặt @ model.attribute trong chế độ xem dao cạo?
@model.attribute = "whatever'
Tôi có một trường bắt buộc, thuộc tính chuỗi {get; set} trong một lớp và muốn đặt giá trị của nó trong dao cạo. Là một cái gì đó như sau đây có thể?Cách đặt @ model.attribute trong chế độ xem dao cạo?
@model.attribute = "whatever'
Trước tiên, vấn đề viết hoa.
@model
(chữ thường "m") là một từ khóa dành riêng trong quan điểm Razor khai báo kiểu mẫu ở phía trên cùng của cái nhìn của bạn, ví dụ:
@model MyNamespace.Models.MyModel
Sau đó trong tập tin, bạn có thể tham khảo các thuộc tính bạn muốn với @Model.Attribute
(chữ hoa "M").
@model
tuyên bố mô hình. Model
tham chiếu đến mô hình hóa.
Thứ hai, bạn có thể gán giá trị cho mô hình của mình và sử dụng sau này trong trang, nhưng sẽ không liên tục khi trang gửi đến hành động điều khiển của bạn trừ khi đó là giá trị trong trường biểu mẫu. Để có được giá trị trở lại trong mô hình của bạn trong quá trình mô hình ràng buộc, bạn cần phải gán giá trị cho một trường mẫu, ví dụ:
Lựa chọn 1
trong hành động điều khiển của bạn, bạn cần phải tạo ra một mô hình cho chế độ xem đầu tiên của trang của bạn, nếu không, khi bạn cố gắng đặt Model.Attribute
, đối tượng Model
sẽ không có giá trị.
Bộ điều khiển:
// This accepts [HttpGet] by default, so it will be used to render the first call to the page
public ActionResult SomeAction()
{
MyModel model = new MyModel();
// optional: if you want to set the property here instead of in your view, you can
// model.Attribute = "whatever";
return View(model);
}
[HttpPost] // This action accepts data posted to the server
public ActionResult SomeAction(MyModel model)
{
// model.Attribute will now be "whatever"
return View(model);
}
Xem:
@{Model.Attribute = "whatever";} @* Only do this here if you did NOT do it in the controller *@
@Html.HiddenFor(m => m.Attribute); @* This will make it so that Attribute = "whatever" when the page submits to the controller *@
Lựa chọn 2
Hoặc, kể từ khi mô hình có tên dựa trên, bạn có thể bỏ qua việc tạo ra các mô hình trong điều khiển của bạn và chỉ đặt tên cho trường biểu mẫu có cùng tên với thuộc tính mô hình của bạn. Trong trường hợp này, thiết lập trường ẩn có tên "Thuộc tính" thành "bất kỳ" sẽ đảm bảo rằng khi trang gửi, giá trị "bất kỳ" sẽ bị ràng buộc vào thuộc tính Attribute
của mô hình của bạn trong quá trình liên kết mô hình. Lưu ý rằng nó không phải là một trường ẩn, chỉ bất kỳ trường nhập HTML nào với name="Attribute"
.
Bộ điều khiển:
public ActionResult SomeAction()
{
return View();
}
[HttpPost] // This action accepts data posted to the server
public ActionResult SomeAction(MyModel model)
{
// model.Attribute will now be "whatever"
return View(model);
}
Xem:
@Html.Hidden("Attribute", "whatever");
Cảm ơn bạn cho việc này. Câu trả lời chính xác. – levteck
Câu trả lời này nên đi vào đại sảnh danh vọng – petric