2009-11-20 29 views
5

Tôi tự hỏi làm cách nào để xóa trường sau khi đăng lại trong asp.net mvc? Giống như ngay bây giờ khi lỗi xác thực xảy ra, các trường vẫn được điền với bất kỳ điều gì người dùng đã nhập. Điều này là tốt tuy nhiên, khi không có lỗi xác nhận xảy ra tôi muốn tất cả các lĩnh vực để xóa và một tin nhắn để hiển thị.Làm thế nào để xóa các trường sau khi đăng bài trở lại trong asp.net MVC?

Vì vậy, ngay bây giờ tôi có thành công hiển thị bằng cách sử dụng ViewData nhưng không chắc chắn làm thế nào để có được các lĩnh vực để xóa.

Trả lời

0

Âm thanh như một công việc cho các PRG (Post Redirect Get) pattern bởi vì bạn không muốn người sử dụng để làm mới trang và có nó gửi lại.

Để thực hiện việc này, tôi sẽ đặt một tin nhắn hoặc gắn cờ trong TempData để bạn có thể kiểm tra điều đó khi bạn chuyển hướng trở lại url gốc để hiển thị thông báo cho người dùng.

2

Phil Haack nói:

Thử gọi

ModelState["value1"].Value = new 
ValueProviderResult(null, 
string.Empty, 
CultureInfo.InvariantCulture); 

trước khi bạn quay trở lại quan điểm từ bên trong hành động điều khiển của bạn.

Điều này xảy ra là giữ tất cả các lỗi được liên kết với khóa "value1", nhưng thay thế giá trị bằng giá trị trống .

From this SO question

-1

Bạn có thể chỉ định mô hình, tham chiếu mới khi bạn đăng lại mô hình trong chế độ xem.
Một cái gì đó như thế này.

if (ModelState.IsValid) 
    { 
     //Do your stuff here. 

     yourModel = new Moodel(); 
     return View(yourModel); 

    } 

Trong trường hợp này tất cả các trường mô hình sẽ trống và không có gì sẽ được hiển thị ở dạng.

+0

này không hoạt động, ModelState.Clear() thực hiện tuy nhiên –

8

Hãy thử điều này:

if(ModelState.IsValid) 
{ 
    ModelState.Clear(); 
} 
return View(); 
+0

Cũng có thể muốn thiết lập lỗi ModelState AFTER dòng này :) – stuartdotnet

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