My Index.cshtmlMVC vượt qua mô hình để xem
@model ReportGenerator.WebUI.Models.ReportViewModel
@Html.TextBoxFor(m => m.report.FileName, new { @class = "form-control", id = "FileName" })
điều khiển của tôi
public ActionResult Index(ReportViewModel model)
{
...some stuff
model.report = new Report();
model.report.FileName = "INDEX";
return View(model);
}
public ActionResult fillFields(ReportViewModel _model)
{
...some stuff
_model.report = new Report();
_model.report.FileName = "FILL";
return View("Index", _model);
}
Khi tôi chạy ứng dụng của tôi TextBox
Text
tài sản được thiết lập để "INDEX". Ngoài ra khi tôi nhấp vào nút gọi hành động điều khiển fillFields
, số TextBox
vẫn hiển thị "INDEX", nó không thay đổi thành "FILL".
Tôi đang làm gì sai? Tại sao nó không muốn làm việc?
Bạn không làm gì sai. Phương thức 'fillFields()' của bạn có một tham số 'ReportViewModel' để các giá trị của nó được thêm vào' ModelState' khi phương thức được khởi tạo. Khi bạn trả về khung nhìn, phương thức 'TextBoxFor()' của bạn sử dụng giá trị từ 'ModelState' (không phải thuộc tính mô hình) để đặt giá trị của hộp văn bản. Lý do cho điều này được giải thích [ở đây] (http://stackoverflow.com/questions/26654862/textboxfor-displaying-initial-value-not-the-value-updated-from-code/26664111#26664111). Cách tiếp cận đúng là tuân theo mẫu PRG –
Cảm ơn! Tôi đã sử dụng ModelState.Clear(); và nó hoạt động – Icet
Không sử dụng 'ModelState.Clear()'. Thực hiện theo mẫu PRG và chuyển hướng! –