【问题标题】:how to avoid duplicated dynamic id on partialViews elements如何避免部分视图元素上的重复动态 id
【发布时间】:2013-06-05 14:05:22
【问题描述】:

我有一个项目,我在克里特岛 jquery 选项卡并使用 Ajax 加载它们的局部视图(全部动态完成),有一些共享的局部视图,如“selectUser”,问题是某些选项卡将在同时,所以我会重复 ids,然后我说“没有概率”会使用类和更具体的选择器,但我无法使用类选择器让 jqgrid 工作。

所以我正在寻找一个不错的方法来: -创建动态ID 或者 -使用类使 jqgrid 工作

【问题讨论】:

    标签: asp.net-mvc-4 jqgrid partial-views


    【解决方案1】:

    Add a prefix to each different item

    public static void RenderPartialWithPrefix(this HtmlHelper helper, string partialViewName, object model, string prefix)
            {
                helper.RenderPartial(partialViewName,
                                     model,
                                     new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = prefix } });
            }
    

    【讨论】:

      【解决方案2】:

      我不确定我是否理解正确。如果您使用 jqGrid,您需要在网格上有 <table> 元素,并带有 一些唯一的 id 属性。如果您动态生成<table> 元素,您可以先生成唯一ID,然后使用id 属性创建<table> 元素。方法$.jgrid.randId()可以帮到你。使用非常简单。您可以在the answer 中找到代码示例。

      存在另一个问题,因为必须为网格的每一行分配唯一的id 属性。如果您在没有为输入数据中的行指定任何 id 的情况下填充网格,或者如果网格的本机 id 可能具有 common 值(不同网格中的相同 rowid),则您可以有 id 重复在数据中。您可以通过使用idPrefix 选项来解决问题。如果您在页面上的所有网格中指定idPrefix 选项的不同 值(例如,idPrefix: "g1_" 用于第一个网格,idPrefix: "g2_" 用于第二个网格,依此类推)将构造 rowid来自ididPrefix。因此,您将有唯一的 rowid。

      【讨论】:

        【解决方案3】:
        @Html.Partial("_Address", 
        new ViewDataDictionary() 
        { 
          TemplateInfo = new TemplateInfo() { HtmlFieldPrefix = "ShippingAddress" }
        })
        

        上面使用的 Partial() 助手的变体使用 ViewDataDictionary 参数来指定 TemplateInfo。 TemplateInfo 的 HtmlFieldPrefix 属性必须设置为您选择的名称。

        结果:

        <input id="ShippingAddress_Street" name="ShippingAddress.Street" type="text" value="" />
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-14
          • 2014-04-13
          • 2010-11-18
          • 1970-01-01
          • 1970-01-01
          • 2020-01-24
          相关资源
          最近更新 更多