2015-07-09 3 views
1

У меня есть кусок 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? 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 части. Этот вопрос на самом деле здесь, но я не получал никаких сообщений, отправляющих ВСЕ информацию.

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

Я считаю, что я должен быть добавив некоторые из этих групп по тэгам где-то в макете, но я не знаю, где.

Спасибо за помощь всем.

+0

Это поможет, если вы покажете нам содержимое 'layoutHTML'. –

+0

Здесь нет магии. Это полностью нормальная замена строк. – usr

+0

layoutHTML - это своего рода шаблон, содержащий '%% TAGS %%', которые заменяются значениями из rollUpItem. Это общая схема/метод для заполнения значений в шаблоне, но реализованный таким образом неэффективен ... вы должны анализировать один символ за раз и заменять '%% TAGS %%', как вы их находите, тогда вы только Пройдите макетHTML один раз. –

ответ

2

Это простые замены токенов. Сервер принимает HTML-шаблон в строке и просто заменяет различные токены в нем значениями, указанными в объекте rollupItem.

Что касается HTML и C# go, то %% ничего не значит - он используется разработчиком, потому что маловероятно, что %% будет существовать где угодно в HTML-документе.

Например, если в качестве токена использовались TITLE, а не %%TITLE%%, возможно, что HTML может содержать слово TITLE, и он будет неправильно заменен.

+0

Я обновил исходный вопрос с помощью более подробной информации, если это поможет поместить в него какую-то перспективу. Я новичок в C# – spex5

+0

Спасибо. Теперь я получаю то, что должны делать теги. Является ли код, который использует теги «group by», фактически эффективные при группировке данных на странице? (SharePoint) – spex5

+0

Не то, чтобы я мог видеть, хотя я мало знаю о SharePoint. – Alan

Смежные вопросы