【问题标题】:how to pass in a reference variable into a RenderPartial?如何将引用变量传递给 RenderPartial?
【发布时间】:2012-09-05 06:39:53
【问题描述】:

我正在尝试将模型类存储传递给 RenderPartial。 renderpartial 的目标是更改/设置此(存储)模型的值。我一直在尝试这样:

@{ Html.RenderPartial("test", new store(){Output=""}); }
@{ Html.RenderPartial("test", new store(){Output2=""}); }


public class store
    {
        public string Output { get; set; }
        public string Output2 { get; set; }
    }

部分“测试”必须更改输出属性。 uberhaupt 是否可能,如果可以,该怎么做? renderpartial 包含一个 javascript 来计算属性的值。

【问题讨论】:

  • 为什么不改用Html.Partial
  • @Eranga,RenderPartial 在某些情况下具有性能优势。

标签: asp.net-mvc-3 c#-4.0 razor


【解决方案1】:

RenderPartial 旨在不从父级或模型的一部分获取任何数据。 过载在: http://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial(v=vs.108).aspx 告诉你对象不是自定义对象,而是作为模型的一部分,例如 Model.Customers

将所需值从您的模型传递给部分,并让部分创建它自己的对象。

如果你真的想将它传递给局部视图,那么为你的父视图创建一个新的视图模型,并在你的视图模型中设置输出属性并将它传递给局部视图。

另请注意,部分获取它自己的数据副本并且无法更新父副本,因此可能会破坏您在此处实际想要的内容。

如果您需要其他一些计算数据,请尽可能在将其传递给视图之前在控制器中执行。

【讨论】:

    【解决方案2】:
    @store st = new store(){Output="", Output2=""};
    @{ Html.RenderPartial("test", new RouteValueDictionary {{"output", st.Output}, {"output2", st.Output2}}); }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2022-08-22
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 2015-12-21
      相关资源
      最近更新 更多