MVC 3 - HTML Helper - PullRequest
       31

MVC 3 - HTML Helper

0 голосов
/ 13 апреля 2011

Я собирался использовать декларативные HTML-помощники, но потом обнаружил, что они не были реализованы в выпуске MVC 3.

Я пытаюсь заставить старых помощников HTML работать со следующим кодом:

private static String GenerateSingleOptionHTML(Question q)
{    
    String ret = "";

    for(int i = 0; i < 3; i++)
    {
        ret += String.Format("<li><input type=\"radio\" id=\"Q" + i +"\" value=\"" + i + "\" name=\"Q" + i +"\" />" + q.Body + "</li>");
    }

    return ret;
}

Игнорируйте html и тэги, так как они работают нормально. На мой взгляд, это: "

Тело Вопрос 1 Тело Вопрос 1 Тело Вопрос 1 ", а не отформатированный HTML.

Спасибо

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Дэвид Нил прав, но в ASP.NET MVC 3 вы должны на самом деле вернуть экземпляр HtmlString, а не MvcHtmlString (хотя оба будут работать):

private static HtmlString GenerateSingleOptionHTML(Question q)
{    
    String ret = "";

    for(int i = 0; i < 3; i++)
    {
        ret += String.Format("<li><input type=\"radio\" id=\"Q" + i 
            +"\" value=\"" + i + "\" name=\"Q" + i +"\" />" + q.Body + "</li>");
    }

    return new HtmlString(ret);
}
2 голосов
/ 13 апреля 2011

Вам необходимо вернуть экземпляр MvcHtmlString .Ваша выходная строка кодируется.

Объект MvcHtmlString будет обрабатываться как уже закодированный во время рендеринга (я предполагаю, что вы используете синтаксис <%: %> вместо <%= %> для внедрения HTML на страницу).

return MvcHtmlString.Create(ret);
...