2012-03-10 38 views
28

Tôi có phương thức điều khiển CreateOrUpdate, phương pháp này được cho là lưu xe vào cơ sở dữ liệu và sau đó trở lại như bình thường.Xem không cập nhật sau bài đăng

public ActionResult CreateOrUpdate(int ID = 0) 
{ 
    Car car = new Car(ID); 
} 

[HttpPost] 
public ActionResult CreateOrUpdate(Car car) 
{ 
     car.Save(); 
     return View(car); 
} 

Trong phương pháp theCar.Save(), tôi đặt id cho chiếc xe, với bất cứ điều gì id sẽ nằm trong cơ sở dữ liệu sau khi chiếc xe được lưu (Khi làm một chèn Tôi sử dụng SCOPE_IDENTITY(), các phương pháp lưu hoạt động tốt, và nếu tôi gỡ lỗi và xem các giá trị cho xe sau khi Save() được gọi, id là chính xác.Nhưng khi View được trả lại ID là 0 trong khung nhìn. tôi, và cho tôi biết lý do tại sao điều này sẽ xảy ra Tôi không giả sử thay đổi Mô hình cho chế độ xem trong phương thức HTTP POST? Tôi có nên chuyển hướng đến phương thức CreateOrUpdate() ban đầu nếu lưu thành công hay không.

+0

thử mà không cần phải 'theCar.Save(); 'dòng . –

+0

theCar.Save() chỉ lưu mô hình. Đây không phải là vấn đề. Ngay cả khi tôi đặt thuộc tính của lớp trong phương thức HttpPost, không có phương thức theCar.Save(). Thuộc tính không được phản ánh trong chế độ xem – Captain0

+0

FYI: Trong trường hợp bạn đã lưu dữ liệu thành công và muốn hiển thị lại trang có thể muốn theo dõi mẫu Đăng/Chuyển hướng/Nhận. https://en.wikipedia.org/wiki/Post/Redirect/Get –

Trả lời

55

nó phải là vấn đề ModelState. nếu bạn sử dụng Htmlhelper để hiển thị giá trị id. Hiển thị HtmlHelper mặc định ModelState value not Model. Hãy thử giá trị mô hình trưng bày theo quan điểm

<td> 
    @Model.id 
</td> 

hoặc Sạch ModelState giá trị trong điều khiển

ModelState.Clear(); 

hoặc thiết lập lại giá trị id sau SaveChange.

theCar.Save(); 
ModelState["id"].Value = theCar.id 
return View(theCar); 

Reset the value of textarea after form submission

+0

'ModelState [" MyModelProperty "]. Value = null;' kết hợp với 'model.MyModelProperty = null;' (để bảo trì trạng thái) đã thực hiện thủ thuật cho vấn đề của tôi. Cảm ơn vì điều này! – Alexandru

+0

Điều này đã cản trở tôi trong thời gian dài nhất, 'ModelState.Clear()' đã làm điều đó cho tôi, cảm ơn! – Novastorm

+1

Lỗi khủng khiếp trong mvc theo ý kiến ​​khiêm tốn của tôi – toddmo

1

Tôi không muốn xóa ModelState bởi vì tôi cần để hiển thị lỗi, vì vậy tôi đã đi với

ValueProviderResult vpr = new ValueProviderResult("", null, System.Globalization.CultureInfo.CurrentCulture); 

ModelState["id"].Value = vpr; 
Các vấn đề liên quan