2010-04-06 44 views
9

tôi có vấn đề với asp.net mvc 2 và trình trợ giúp html.textboxfor. tôi sử dụng mã sau trong một hình thức:Asp.NET MVC Html.TextBox refresh problem

<%= Html.TextBoxFor(model => model.Zip, new { @class = "txt", id = "zip", tabindex = 1 })%> 

khi người dùng gửi biểu mẫu, tôi xác nhận mã bưu điện, khi zip không hợp lệ chúng tôi đặt zip sửa chữa. mô hình của tôi có mã zip được sửa, mã html được tạo từ asp chứa giá trị zip cũ.

mẫu: người dùng ghi zip: 12345 lớp xác nhận của tôi, điều chỉnh teh zip để: 12.346 mô hình của tôi chứa zip mới: 123456, trên gui tôi thấy chỉ 12345

vấn đề là gì?

Trả lời

7

Bạn không thể sửa đổi các giá trị trong hành động điều khiển của mình vì trình trợ giúp sẽ luôn sử dụng giá trị được POST khi tạo hộp văn bản. Đây là do thiết kế và nếu bạn muốn để workaround nó, bạn sẽ phải viết helper của riêng bạn hoặc tạo ra các hộp bằng tay:

<input 
    type="text" 
    name="Zip" 
    value="<%= Html.Encode(Model.Zip) %>" 
    class="txt" 
    id="zip" 
    tabindex="1" 
/> 
2

Xóa ModelState sử dụng ModelState.Clear(), cập nhật đối tượng của bạn và sau đó trả lại.

+0

Cách giải quyết này phù hợp với tôi. Nó có bất kỳ tác dụng phụ nào không? – chenz