我正在创建拍卖。拍卖对象有很多对象作为属性,如:MVC5复杂对象表单
Auction
-[Property]
-[Neighborhood]
-[Agent]
-source
-clientId
-reserve
Property
-Street
-City
-State
-Zip
Agent
-Name
-Email
-Telephone
Neighborhood
-Name
-HOA Fee
所以基本上我必须创建一个多选项卡视图来更新拍卖对象。
选项卡有:拍卖,房地产,代理,邻居
不幸的是,我一直要求把性能从其他对象的标签。所以或者例如“邻居”选项卡将具有Property.Zip并且“属性”选项卡将具有Auction.ClientId。
所以我所做的是为视图中的每个选项卡创建一个部分..下面是一个简化示例。
@Model Auction
@using(Html.BeginForm("Update", "Auction", HttpMethod.Post, new {})
{
<div class="panel">
@Html.Partial("_AuctionTab")
</div>
<div class="panel">
@Html.Partial("_PropertyTab")
</div>
<div class="panel">
@Html.Partial("_AgentTab")
</div>
<div class="panel">
@Html.Partial("_NeighborhoodTab")
</div>
<button>Submit</button>
}
部分都使用拍卖模式。
这里的_PropertyTab部分的一个例子:
@Model Auction
@Html.LabelFor(m=> m.ClientId)<br/>
@Html.EditorFor(m=> m.ClientId)<br/><br/>
@Html.LabelFor(m=> m.Property.Street)<br/>
@Html.EditorFor(m=> m.Property.Street)<br/><br/>
@Html.LabelFor(m=> m.Property.City)<br/>
@Html.EditorFor(m=> m.Property.City)<br/><br/>
@Html.LabelFor(m=> m.Property.State)<br/>
@Html.EditorFor(m=> m.Property.State)<br/><br/>
@Html.LabelFor(m=> m.Property.Zip)<br/>
@Html.EditorFor(m=> m.Property.Zip)<br/><br/>
@Html.LabelFor(m=> m.Property.Street)<br/>
@Html.EditorFor(m=> m.Property.Street)<br/><br/>
的问题是,当我点击提交,拍卖返回更新动作大多是空除了第一部分的值。在这里,我的头撞在墙上,直到做什么。
基本上提交按钮必须保存整个拍卖。任何关于方法和最佳实践的建议?
谢谢!
你能告诉我一个ViewModel应该如何看的例子吗?它将如何与部分视图配合使用? – Proximo
@Proximo我已经更新了我的答案。 – scartag
所以我必须为每个选项卡的每个属性创建一个ViewModel? :(当我讨厌打字时,我只显示了对象属性的缩写版本。 – Proximo