2015-10-05 16 views
7

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 TextBoxText 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?

+5

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 –

+0

Cảm ơn! Tôi đã sử dụng ModelState.Clear(); và nó hoạt động – Icet

+2

Không sử dụng 'ModelState.Clear()'. Thực hiện theo mẫu PRG và chuyển hướng! –

Trả lời

1

@StephenMuecke đã trả lời chính xác trong các nhận xét ở trên.

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ả lại chế độ xem, 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 here. Cách tiếp cận đúng là tuân theo mẫu PRG -

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