2012-09-07 24 views
31

Tôi đang sử dụng ASP.NET MVC 3 với Dao cạo, dưới đây là mẫu từ mã xem của tôi.Html.DisplayĐể không đăng giá trị cho bộ điều khiển trong ASP.NET MVC 3

Người dùng có thể chỉnh sửa tất cả chi tiết của họ, ngoại trừ trường "EmailAddress". Chỉ với trường đó tôi đã sử dụng Html.DisplayFor(m => m.EmailAddress).

Nhưng khi biểu mẫu này được đăng, tất cả các thuộc tính mô hình đều được điền trừ EmailAddress.

Làm cách nào để nhận lại email trong mô hình khi đăng? Tôi có nên sử dụng một số trợ giúp khác ngoài DisplayFor không?

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true, "Account update was unsuccessful. Please correct any errors and try again.") 
    <div> 
     <fieldset> 
      <legend>Update Account Information</legend> 
      <div class="editor-label"> 
       @Html.LabelFor(m => m.EmailAddress) 
      </div> 
      <div class="editor-field"> 
       @Html.DisplayFor(m => m.EmailAddress) 
       @*@Html.ValidationMessageFor(m => m.EmailAddress)*@ 
      </div>   
      <div class="editor-label"> 
       @Html.LabelFor(m => m.FirstName) 
      </div> 
      <div class="editor-field"> 
       @Html.TextBoxFor(m => m.FirstName) 
       @Html.ValidationMessageFor(m => m.FirstName) 
      </div> 
      <div class="editor-label"> 
       @Html.LabelFor(m => m.LastName) 
      </div> 
      <div class="editor-field"> 
      @Html.TextBoxFor(m => m.LastName) 
       @Html.ValidationMessageFor(m => m.LastName) 
      </div> 
      <p> 
       <input type="submit" value="Update" />     
      </p> 
     </fieldset> 
    </div> 
} 

Vui lòng thông báo cho tôi về điều này.

Trả lời

44

bạn sẽ cần phải thêm một

@Html.HiddenFor(m => m.EmailAddress) 

DisplayFor sẽ không gửi bất cứ điều gì trong POST, nó sẽ không tạo ra một đầu vào ...

Bằng cách này, một

@Html.HiddenFor(m => m.Id) // or anything which is the model key

sẽ hữu ích

+1

ok vì vậy trong trường hợp của tôi, tôi sẽ cần phải có cả hai ' DisplayFor' và 'HiddenFor' phải không? DisplayFor sẽ hiển thị giá trị cho người dùng và HiddenFor sẽ đăng giá trị trở lại bộ điều khiển. – Yasser

+6

tìm thấy http://stackoverflow.com/a/11057087/1182982 rất thông tin này! – Yasser

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