使用%%了解C#中的标记

时间:2015-07-09 21:53:25

标签: c#

我有一块看起来像这样的C#:

public static string PopulateLayoutHTML(string layoutHTML, RollupItem rollupItem, WebPartSettings settings, int itemIndex, string lastGroupByValue) 
{ 
    layoutHTML = layoutHTML.Replace("%%ITEM_INDEX%%", itemIndex.ToString()); 
    layoutHTML = layoutHTML.Replace("%%TITLE%%", rollupItem.Title); 
    layoutHTML = layoutHTML.Replace("%%SUBTITLE%%", rollupItem.Subtitle); 
    layoutHTML = layoutHTML.Replace("%%DESCRIPTION%%", StripDivTags(rollupItem.Description)); 
    layoutHTML = layoutHTML.Replace("%%AUTHOR%%", rollupItem.Author);  

    if (!rollupItem.GroupByValue.IsNullOrEmpty() && rollupItem.GroupByValue != lastGroupByValue && layoutHTML.Contains("%%GROUPBY%%")) 
    { 
        layoutHTML = layoutHTML.Replace("%%BEGIN_GROUPBY%%", "").Replace("%%END_GROUPBY%%", "").Replace("%%GROUPBY%%", rollupItem.GroupByValue); 
    } 
    else if (layoutHTML.Contains("%%BEGIN_GROUPBY%%")) 
    { 
        int startIndex = layoutHTML.IndexOf("%%BEGIN_GROUPBY%%"); 
        int endIndex = layoutHTML.IndexOf("%%END_GROUPBY%%") + 15; 
        try 
        { 
            string groupBySubstring = layoutHTML.Substring(startIndex, endIndex - startIndex); 
            layoutHTML = layoutHTML.Replace(groupBySubstring, ""); 
        } 
        catch 
        { 
        } 
    } 
    else 
    { 
        layoutHTML = layoutHTML.Replace("%%GROUPBY%%", ""); 
    } 

有人可以解释%%这些%%的所有名称是什么以及代码在做什么?这些%%标签%%怎么可能与基于HTML的前端UI交互? HTML也引用它们。

这是代码引用的layouthtml:

<div style="border-bottom:solid 1px #009581; padding:5px; margin-right:10px;"> 

         <div style="width:100%; height:25px; margin:2px 0 0; width:100%; padding-bottom:5px;"> 
        <!--accordion head start--> 

             <div style="float:left;"> 

                <a href="javascript:showTaxRollupItem('%%ITEM_INDEX%%');" id="taxRollupExpand_%%ITEM_INDEX%%" style="display:inline;"><img border="0" src="/Style%20Library/Rollup%20Web%20Part%20Files/images/icnAdd.png"></a> 

                <a href="javascript:hideTaxRollupItem('%%ITEM_INDEX%%');" id="taxRollupContract_%%ITEM_INDEX%%" style="display:none;"><img border="0" src="/Style%20Library/Rollup%20Web%20Part%20Files/images/icnSubtract.png"></a> 

            </div>  

<div style="float:left; width:95%; padding-left:5px"> 

                %%BEGIN_LINKTAG%% style="color:#005293; font-size:12px; text-decoration:none; cursor:pointer;" 

                %%CLOSE_LINKTAG%%%%TITLE%%%%END_LINKTAG%%&nbsp;(%%MODIFIEDDATE%%)%%SECURITY_ICON%% 

            </div> 

        </div><!--accordion head end--> 


        <div id="taxRollupDesc_%%ITEM_INDEX%%" style="margin:3px 0 10px 0; display:none;"> 
            <!--accordion content start--> 

            <p style="margin:3px 0 10px 15px; font-size:12px;"> 

            %%DESCRIPTION%% 

</p> 

        </div><!--accordion content end--> 


    </div>

我实际上要做的是在SharePoint显示Web部件中对某些字段进行分组。这个问题实际上就在这里,但我没有得到任何回复所有信息。

https://sharepoint.stackexchange.com/questions/148776/group-by-fields-displayed-in-a-custom-web-part

我相信我应该在布局的某处添加一些标签,但我不确定在哪里。

感谢大家的帮助。

1 个答案:

答案 0 :(得分:2)

这些是简单的字符串标记替换。服务器在字符串中使用HTML模板,只需用rollupItem对象中提供的值替换其中的各种标记。

就HTML和C#而言,%%意味着什么 - 开发人员正在使用它,因为%%通常不会存在于HTML文档的任何位置。

例如,如果他们使用TITLE作为令牌,而不是%%TITLE%%,那么HTML可能包含单词TITLE,而且会被错误地替换