【问题标题】:ASP.NET MVC + jqGrid Embedded Links Best PracticesASP.NET MVC + jqGrid 嵌入式链接最佳实践
【发布时间】:2009-04-16 23:21:08
【问题描述】:

我有一个 Mvc 应用程序,我正在用 jqGrid [XML] 替换一些硬呈现的表。

问题是我的其中一列中有操作链接,可以对行执行某些操作。我在我的 XML 中使用 CDATA 标记复制了这些;但是问题是现在这个标签是在一个动作方法中生成的,所以所有的 HTML 都在我的控制器中(在 TagBuilder 中),这绝对不是很好。

我打算研究 RenderPartialExtensions,但你需要一个 HtmlHelper 实例,而且我正在使用盲文视图引擎,所以我什至不确定它是否会工作。

其他人是如何处理这个问题的?
我想我可以创建一个像 html 一样呈现实际 xml 的视图,但是我需要为每个 xml 数据源创建一个视图,并且我已经有了这些。

提前感谢您的意见。

【问题讨论】:

    标签: jquery asp.net-mvc jqgrid


    【解决方案1】:

    我不确定您要问什么,但我有一些 XML 数据——用于豁免、发布等的法律术语——我会在我的视图中呈现这些数据。我使用了 HtmlHelper 扩展路线并创建了一个扩展,该扩展采用文档的 URL 和将其转换为 HTML 的 XSLT 样式表。我使用 LINQ XML 类在 MemoryStream 中加载 XML 并将其呈现为 HTML。然后它将它作为一个字符串返回,该字符串通过视图写入响应。如果您无权访问 HTML 帮助程序,则可以在静态类上编写类似于静态方法的内容(无论如何这就是扩展),但不使用扩展语法。这可以在您喜欢的任何视图中呈现。

    我的代码示例:

     <%= Html.RenderXML( Url.Content( "~/App_Data/waiver.xml" ),
                         Url.Content( "~/Content/styles/waiver.xsl" ) ) %>
    

    【讨论】:

      【解决方案2】:

      澄清更多架构以及我最终如何解决它。我有以下项目/程序集:

      1. 业务对象
      2. VB XML 反序列化库
      3. ASP.NET MVC 项目

      VB XML 程序集处理仅处理业务 (#1) 模型的业务对象的序列化。所以我会输出一个像这样的 XElement:

      <invoice>
         <invoiceId>1234</invoiceId>
         <customer>Hudsucker Industries</customer>
         <otherBusinessData>etc, etc</otherBusinessData>
      </invoice>
      

      问题出现了,我正在使用 jqGrid,我需要将元素添加到每个发票的某些操作,所以我需要类似的东西:

      <invoice>
         <actionHtml><![CDATA[   ...some HTML such as links... ]]></actionHtml>
         <invoiceId>1234</invoiceId>
         <customer>Hudsucker Industries</customer>
         <otherBusinessData>etc, etc</otherBusinessData>
      </invoice>
      

      我让它工作,但我必须在控制器中生成所有 actionHtml,这显然不是一个很好的关注点分离,我丢失了我所有的 HtmlHelper 方法等。所以我最终如何以“正确”的方式解决它:

      1. 使用 WebForms 视图(我的页面使用盲文视图)[所以我可以使用 ContentType 页面属性将其设置为 XML]。
      2. 将我的原始业务对象的集合作为模型数据传递。
      3. 循环模型集合,为视图中的每个发票构建 actonHtml 元素(因此获取我的 HtmlHelper 方法等)
      4. 要输出实际的业务元素,我可以简单地调用我的 VB XML 库并执行以下操作:invoice.ToXml().Elements().ToString(),我很好。

      为了进一步提高它的可重用性,我创建了一个 jqGrid 母版页,其中包含所有记录计数等内容区域,因此我可以将这些信息传递到实际页面上,而只需担心输出元素数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        相关资源
        最近更新 更多