【问题标题】:Passing additional data value to strongly typed partial views in ASP.NET MVC将附加数据值传递给 ASP.NET MVC 中的强类型分部视图
【发布时间】:2013-04-29 05:56:54
【问题描述】:

我有一个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 位来更新订单的某些部分,并且我意识到我的每个部分视图也需要访问 IOrderForm.OrderId .

让我的部分访问这个值的最简单方法是什么?

【问题讨论】:

  • 您的路线中有您的 orderId,只需从那里获取...

标签: c# asp.net-mvc data-binding partial-views


【解决方案1】:

您可以使用类似

的方式从您的路线中获取价值
this.ViewContext.RouteData.GetRequiredString["OrderId"]

或者您将其添加到您的 viewData 并重用将其传递给您的 partialView

TempData 也是一个很简单的方法...

【讨论】:

    【解决方案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> 
    

    或者您可以在操作中将 OrderID 分配给 tempData

    TempData("OrderId") = your orderIDValue
    

    【讨论】:

      【解决方案3】:

      RenderPartial 有一个重载,它同时接受 Model 对象和 ViewData 字典,因此您可能只需设置一个 ViewData 值,并将 ViewData 对象传递给部分。

      另一种选择是在部分 ViewModel 中包含一个 Order Id 成员,并将 Order Id 复制到其中。

      【讨论】:

        【解决方案4】:

        仅依赖于 RenderPartial 的模型,只需传递您的模型即可。

        <% Html.RenderPartial("~/controls/users.ascx", modelGoesHere); %>
        

        然后在局部视图本身内部,通常您可以执行以下操作:

        <%= Model.VariableName %>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-02
          • 1970-01-01
          • 2013-12-26
          • 2011-01-28
          • 2013-04-07
          • 1970-01-01
          • 2010-11-06
          • 1970-01-01
          相关资源
          最近更新 更多