Asp.net mvc 2 ASP.NET MVC2订单/订单行(主/明细)视图-如何绑定所有内容
我创建了这个表单:(代码如下) 我正在使用方法(jquery)填充列表 当我发布表单时,我只得到标题字段。 如何将这两个列表字段绑定到模型中(视图模型中的顺序包含这些列表的枚举,并用于填充它们。我需要一种方法将它们连同两个列表中添加的行一起发送回去。 以下是页面代码:Asp.net mvc 2 ASP.NET MVC2订单/订单行(主/明细)视图-如何绑定所有内容,asp.net-mvc-2,Asp.net Mvc 2,我创建了这个表单:(代码如下) 我正在使用方法(jquery)填充列表 当我发布表单时,我只得到标题字段。 如何将这两个列表字段绑定到模型中(视图模型中的顺序包含这些列表的枚举,并用于填充它们。我需要一种方法将它们连同两个列表中添加的行一起发送回去。 以下是页面代码: <h2> <%: Html.Label(Model.order.OrderID.ToString()) %></h2> <% using (Html.Begi
<h2>
<%: Html.Label(Model.order.OrderID.ToString()) %></h2>
<% using (Html.BeginForm("EditOrder", "Orders", FormMethod.Post, Model))
{%>
<%: Html.ValidationSummary(true)%>
<fieldset>
<legend>OrderDetails</legend>
<div>
<%: Html.Label("Order Date: ")%>
<%: Html.TextBoxFor(o => o.order.OrderDate)%>
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<fieldset>
<legend>Order Items:</legend>
<div id="editorRows">
<% foreach (var item in Model.order.ItemsInOrders)
{
Html.RenderPartial("ItemEditorRow", item);
Html.Display("<br/>");
}
%>
</div>
<%= Html.ActionLink("Add...", "BlankItemRow", null, new { id = "addItem" }) %>
</fieldset>
<fieldset>
<legend>Order Activities:</legend>
<div id="ActivityRows">
<% foreach (var item in Model.order.ActivityInOrders)
{
Html.RenderPartial("ActivityEditorRow", new TechRun.UI.Models.OrderActivityViewModel { activity = item, activitiesList = Model.activities });
Html.Display("<br/>");
}
%>
</div>
<%= Html.ActionLink("add...", "BlankActivityRow", null, new { id = "addItem2" })%>
</fieldset>
<fieldset>
<legend>Order Summary:</legend>
</fieldset>
<%} %>
订单详情
o、 订单。订单日期)%>
订购项目:
订购活动:
订单摘要:
编辑:更新:
以下是部分视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TechRun.Shared.ItemsInOrder>" %>
<%@ Import Namespace="TechRun.UI.HtmlHelpers"%>
<div class="editorRow">
<% using (Html.BeginCollectionItem("items"))
{ %>
ID: <%: Html.TextBoxFor(x => x.ItemID)%>
ITEM: <%: Html.TextBoxFor(x => x.ItemDescription) %>
PRICE: <%: Html.TextBoxFor(x => x.CostOfItem, new { size = 4 }) %>
NUME: <%: Html.TextBoxFor(x => x.NumOfItems, new { size = 4 }) %>
DatE: <%: Html.TextBoxFor(x => x.SupplyDate) %>
Total: <%: Html.Label((Model.CostOfItem * Model.NumOfItems).ToString())%>
<!-- This might be wrong -->
<%: Html.HiddenFor(x=>x.TotalCost,Model.CostOfItem * Model.NumOfItems) %>
<%: Html.HiddenFor(x=>x.OrderID, Model.OrderID) %>
<% } %>
</div>
<br />
ID:x.ItemID)%%>
项目:x.ItemDescription)%%>
价格:x.CostOfItem,新{size=4})%>
NUME:x.NumOfItems,新的{size=4})%>
日期:x.SupplyDate)%>
总数:
x、 总成本,Model.CostOfItem*Model.NumOfItems)%>
x、 OrderID,Model.OrderID)%%>
和另一个行生成器:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TechRun.UI.Models.OrderActivityViewModel>" %>
<div class="ActivityRows">
<% using (Html.BeginCollectionItem("activities"))
{ %>
<% IEnumerable<SelectListItem> myActivityList = null;
if(Model.activitiesList != null)
{
myActivityList = Model.activitiesList.Select(o => new SelectListItem
{
Text = o.ActivityID +
" - " + o.ActivityName + " Price: " + o.Cost + " TIME: " + o.ActivityTimeHours,
Value = o.ActivityID.ToString(),
Selected = (o.ActivityID == Model.activity.ActivityID)
});
}
else return ; %>
ID:
<%: Html.DropDownListFor(x => x.activity.ActivityID, myActivityList)%>
PRICE:
<%: Html.TextBoxFor(x => x.activity.Cost, new { size = 4 })%>
TIME:
<%: Html.TextBoxFor(x => x.activity.TimeHours, new { size = 4 })%>
NUM:
<%: Html.TextBoxFor(x => x.activity.Items)%>
TOTAL:
<%: Html.Label((Model.activity.Items * Model.activity.Cost).ToString())%>
<%: Html.HiddenFor(x => x.activity.Total, Model.activity.Cost * Model.activity.Items)%>
<%: Html.HiddenFor(x => x.activity.OrderID, Model.activity.OrderID)%>
<% } %>
</div>
<br />
新建SelectListItem
{
Text=o.ActivityID+
“-”+o.ActivityName+”价格:“+o.Cost+”时间:“+o.ActivityTimeHours,
Value=o.ActivityID.ToString(),
所选=(o.ActivityID==Model.activity.ActivityID)
});
}
否则返回;%%>
身份证件:
x、 activity.ActivityID,myActivityList)%%>
价格:
x、 作业成本,新{size=4})%>
时间:
x、 activity.TimeHours,新的{size=4})%>
号码:
x、 活动(项目)%>
总数:
x、 活动.总计,模型.活动.成本*模型.活动.项目)%>
x、 activity.OrderID,Model.activity.OrderID)%>
而且。。。从Html.BeginCollectionItem(“items”)行复制的前缀生成编码需要 差不多 Html.BeginCollectionItem(“order.ItemsInOrders”) 其中,参数是包含项的属性的名称 老实说,我还没有用嵌套对象尝试过这种方法。您可能需要首先在初始模型上显示列表。比如:
public xxxx order_ItemsInOrders
{
get { return order.ItemsInOrders; }
set { xxxx } // may not bee needed
}
然后
<div id="editorRows">
<% foreach (var item in Model.order_ItemsInOrders)
{
Html.RenderPartial("ItemEditorRow", item);
Html.Display("<br/>");
}
%>
</div>
此外,ItemsInOrders或ItemsInOrders也需要作为属性进行删除。能否发布“ItemEditorRow”和“ActivityEditorRow”部分的代码?
<div id="editorRows">
<% foreach (var item in Model.order_ItemsInOrders)
{
Html.RenderPartial("ItemEditorRow", item);
Html.Display("<br/>");
}
%>
</div>