2009-11-02 2 views
-1
const string postdescWithComments = @"<span class=""footerLeft"">posted on <a href=""{0}"" title = ""Permanent link to this post"">{1}</a></span><span class=""footerRight""><a href=""{2}#feedback"" title=""comments, pingbacks, trackbacks"" class=""comments""><img class=""feedbackimage"" src=""/skins/xxx/images/cloud.gif"" width=""13"" height=""12"" border=""0"" />Comments({3})</a><a href=""{0}"" class=""moreimage"" title = ""Permanent link to this post""><img src="" 
+ <%=WebUtilityMethods.GetRoot()%> + 
""skins/xxx/images/document.gif border=""0""> More</a></span>"; 

Я не могу убежать от этого правильно, и это заставляет меня гайки.Неисправность ускользающей строки

GetRoot() просто возвращает строку

+0

Что вы получите? –

ответ

2

Я считаю, что легче следовать с помощью String.Format. Попробуйте следующее:

String.Format("<img src=\"{0}skins/xxx/images/document.gif\" border=\"0\">", WebUtilityMethods.GetRoot()); 
+0

жаль, что я изменил исходное сообщение – PositiveGuy

+0

да, это на самом деле то, как он настроен, дух. Я не понимал. Это было сделано дальше в коде ... Я обычно делаю это так, но сейчас бежал, как сумасшедший. – PositiveGuy

1

Почему вы пытаетесь избежать этого? Этот код должен запускаться внутри ASP.NET с использованием декларативного синтаксиса, вам не нужно ничего избегать, или, может быть, я чего-то не хватает? Попробуйте следующее:

<img src=' 
    <%=WebUtilityMethods.GetRoot() + 
    "skins/xxx/images/document.gif" %>' 
    border="0"> 

EDIT: это был оригинальный вопрос. Вот для новой задачи (вопрос был полностью изменен). Он не содержал никаких ошибок, но было трудно читать со всеми "", поэтому я заменил его. Не уверен, что вы после этого, мне кажется, что вы пытаетесь использовать истолковано декларативный синтаксис внутри кода позади, что невозможно, извините:

// slightly more readable: 
const string postdescWithComments = 
       @" 
<span class='footerLeft'> 
    posted on <a href='{0}' title = 'Permanent link to this post'>{1}</a> 
</span> 
<span class='footerRight'> 
    <a href='{2}#feedback' 
     title='comments, pingbacks, trackbacks' 
     class='comments'> 

     <img class='feedbackimage' 
      src='/skins/pmall/images/cloud.gif' width='13' 
      height='12' border='0' /> 

     Comments({3}) 
    </a> 

    <a href='{0}' class='moreimage' title = 'Permanent link to this post'> 
     <img src='{4}skins/xxx/images/document.gif' border='0'> 
     More 
    </a> 
</span>"; 

// somewhere else, this is where your GetRoot() goes: 
string parsedString = String.Format(
    postdescWithComments, 
    href, 
    hrefText, 
    hrefFeedback, 
    feedbackText, 
    WebUtilityMethods.GetRoot()); 

EDIT: как вы выяснили, что очень сложно проверить код (например, когда он находится на одной строке, как в вашем исходном сообщении) для ошибок. Если возможно, переместите код в декларативный раздел (часть, где находится HTML-страница вашей страницы). Затем вы можете использовать синтаксис <%= и в качестве бонуса вы получите автоматическую проверку синтаксиса HTML.

Если это невозможно, вы должны заменить часть <%=...%> на {4} и использовать String.Format, чтобы заполнить пробелы, так же, как и с другими частями.

EDIT: (!) Это последнее замечание, и хорошо пятнистый закрытия цитата из Agent_9191 отражены в блоке кода для ясности.

+0

Он сказал, что GetRoot() возвращает строку. Поэтому ToString() бессмысленна. –

+0

Он сказал: «GetRoot()« просто возвращает строку », которую я понял как« возвращает »*« <% = WebUtilityMethods.GetRoot()%> »*, который правильно смотрит на его код: это * не интерпретированы *. Проблема с этим кодом: это не в нужном месте, поэтому 'GetRoot()' никогда не выполняется. Но вы правы, это, вероятно, метод, который возвращает строку, если она была выполнена ;-) – Abel

+0

sh ** вы можете удалить p *** Я не хочу, чтобы это было опубликовано. – PositiveGuy

0

Другие ответы были близки, заявив, что вам легче избежать вашего тега изображения, но на самом деле вам не хватало заключительной цитаты для источника. Также легче вставлять измененные кавычки, а не пытаться избежать кавычек. Попробуйте следующее:

const string postdescWithComments = @"<span class='footerLeft'>posted on <a href='{0}' title='Permanent link to this post'>{1}</a></span><span class='footerRight'><a href='{2}#feedback' title='comments, pingbacks, trackbacks' class='comments'><img class='feedbackimage' src='/skins/xxx/images/cloud.gif' width='13' height='12' border='0' />Comments({3})</a><a href='{0}' class='moreimage' title = 'Permanent link to this post'><img src='"" + <%=WebUtilityMethods.GetRoot()%> + ""skins/xxx/images/document.gif' border='0' /> More</a></span>"; 
+0

Вы можете удалить p *** из сообщения. Благодарю. – PositiveGuy

+0

привет? интересно, удалите ли вы мою ошибку. – PositiveGuy

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