我有一个OrderForm
域类,它有属性子类,如:
interface IOrderForm
{
int OrderId { get; }
ICustomerDetails CustomerDetails { get; set; }
IDeliveryDetails DeliveryDetails{ get; set; }
IPaymentsDetails PaymentsDetails { get; set; }
IOrderDetails OrderDetails { get; set; }
}
我的“详细信息”视图是从IOrderForm
继承的强类型视图。然后,我有一个强类型部分渲染每个部分:
<div id="CustomerDetails">
<% Html.RenderPartial("CustomerDetails", Model.CustomerDetails); %>
</div>
<div id="DeliveryDetails">
<% Html.RenderPartial("DeliveryDetails", Model.DeliveryDetails); %>
</div>
... etc
到目前为止这个工作正常,但我正在尝试添加一些不错的ajax位来更新订单表单的某些部分,并且我意识到我的每个部分视图也需要访问{{1 }}。
最简单的方法是让我的部分人员可以访问这个值吗?
答案 0 :(得分:2)
你必须稍微改变你的代码,但你可以这样做
<div id="CustomerDetails">
<% Html.RenderPartial("CustomerDetails", new {OrderID = Model.OrderID, CustomerDetails = Model.CustomerDetails}); %>
</div>
<div id="DeliveryDetails">
<% Html.RenderPartial("DeliveryDetails", new {OrderID = Model.OrderID, DeliveryDetails = Model.DeliveryDetails); %>
</div>
或者您可以在Action
中将OrderID分配给tempDataTempData("OrderId") = your orderIDValue
答案 1 :(得分:2)
您可以使用
之类的内容从路线获取值this.ViewContext.RouteData.GetRequiredString["OrderId"]
或者您将其添加到viewData并重复将其传递给您的partialView
TempData也是一种非常简单的方法......
答案 2 :(得分:1)
RenderPartial
有一个重载接受Model对象和ViewData字典,因此您可能只需设置一个ViewData值,并将ViewData对象传递给partial。
另一个选项是在部分ViewModel中包含Order Id成员,并将Order Id复制到其中。
答案 3 :(得分:0)
只需依靠RenderPartial模型,只需将模型传递给。
<% Html.RenderPartial("~/controls/users.ascx", modelGoesHere); %>
然后在局部视图本身内部,通常可以执行以下操作:
<%= Model.VariableName %>