2013-03-20 37 views
16

Tôi hiểu rằng tôi có thể sử dụng @Html.HiddenFor(m => m.parameter) và khi biểu mẫu được gửi, tham số đó sẽ được chuyển tới bộ điều khiển. Mô hình của tôi có nhiều thuộc tính.Vượt qua toàn bộ mô hình khi gửi biểu mẫu

Có cách nào ngắn hơn để truyền toàn bộ mô hình cùng một lúc cho bộ điều khiển hay tôi phải làm từng cái một mỗi lần?

Trả lời

17

Mô hình sẽ được chuyển cho toàn bộ bộ điều khiển, nhưng giá trị của các thuộc tính không bị ràng buộc bởi đầu vào hoặc trường ẩn sẽ bị mất.

Bạn phải liên kết các thuộc tính trong biểu mẫu ở phía máy khách hoặc tìm nạp lại thực thể ở phía máy chủ.

Dường như bạn đang yêu cầu một cái gì đó như @Html.HiddenFor(m => m.Model) và điều đó là không thể. Xin lỗi

Một điều cần lưu ý, nếu bạn có hàng tấn trường ẩn, bạn có thể gửi nhiều dữ liệu hơn cho chế độ xem hơn mức bạn thực sự cần. Cân nhắc sử dụng các kiểu xem

0

Toàn bộ mô hình sẽ được đăng nếu bạn đang sử dụng phần tử MẪU. yếu tố của bạn bằng cách sử dụng mô hình rõ ràng cần phải được bên trong yếu tố hình thức

Bạn cũng có thể đăng các hình thức chính mình nói bằng cách sử dụng JQuery

Xem chồng này vấn đề khác cho rằng: jQuery AJAX submit form

Có một cái nhìn cận cảnh . các anwser bởi "Alfrekjv"

1

này đã được xây dựng trong xem xét mô hình này:

public class MyModel 
{ 
    public string PropertyA { get; set; } 
    public string parameter { get; set; } 
} 

và bây giờ đồng nsider hành động này:

[HttpPost] 
public ActionResult PostSomeData(MyModel model) 
{ 
} 

MVC sẽ tận dụng FormCollection và điền vào các lớp MyModel nơi nó có thể. Nếu bạn không có PropertyA trong biểu mẫu thì đó sẽ là null. Nhưng vì bạn có một số input cho thuộc tính parameter, số này sẽ được điền.

1

Đối với bất kỳ ai nhìn vào điều này, bạn có thể thực hiện @ Html.EditorForModel() trong div ẩn. Bạn cũng sẽ phải sử dụng @ Html.EditorFor (model => model.ObjectProperty) cho mỗi thuộc tính đối tượng của mô hình.

<div hidden="hidden"> 
    @Html.EditorForModel() 
    @Html.EditorFor(model => model.ObjectProperty) 
    @Html.EditorFor(model => model.ListOfObjectsProperty) 
</div> 
0

Bạn có thể kiểm tra chỉ các thuộc tính bạn muốn:

if (this.ModelState.IsValidField("Name")) 
{ 
    // ..... 
} 

thay vì:

if (this.ModelState.IsValid) 
{ 
    // ..... 
} 
Các vấn đề liên quan