MVC2: есть ли Html Helper для необработанного Html? - PullRequest
5 голосов
/ 31 января 2010

Есть ли вспомогательный HTML, который просто принимает и возвращает необработанный HTML? Вместо того, чтобы делать что-то ужасное, как это:

<% if (Model.Results.Count > 0) { %><h2>Results</h2><% } %>

Я бы хотел сделать что-то вроде этого:

 <% if (Model.Results.Count > 0) { Html.RawHtml("<h2>Results</h2>") } %>

Не намного чище, но я думаю, что это немного лучше. Существует ли что-то подобное? Или, возможно, есть лучшая альтернатива для вывода необработанного html из этих escape-символов, чем использование помощников Html?

Ответы [ 4 ]

11 голосов
/ 01 августа 2011

Для MVC2:

<%: MvcHtmlString.Create("<h2>Results</h2>") %>

Найдено здесь:

хранить и отображать HTML-теги в MVC

5 голосов
/ 31 января 2010

Response.Write должно работать. (Хотя, возможно, это своего рода шаг назад!) Вы должны иметь возможность создать метод расширения, чтобы сделать это. И, возможно, вместо использования строки HTML, вы можете создать разметку в коде , используя TagBuilder .

1 голос
/ 05 октября 2011

Если вы хотите использовать HtmlHelper для всего, что вы делаете, вы можете вернуть MvcHtmlString, созданную с помощью TabBuilder

Вот пример того, что я использую:

    public static MvcHtmlString AccountsDropDown(this HtmlHelper helper, string name,  object htmlAddributes = null, bool addNull = false, Guid? selected = null)
    {
        Account acc = HttpContext.Current.Session["account"] as Account;

        TagBuilder tb = new TagBuilder("select");

        tb.GenerateId(name);
        tb.Attributes["name"] = name;

        if (addNull)
            tb.InnerHtml += string.Format("<option value= '{0}'> {1} </option>", "", "None");


        Dictionary<Guid, String> accounts;

        if (acc.Master)
            accounts = db.Account.ToDictionary(x => x.Id, x => x.Name);
        else
            accounts = db.Account.Where(x => x.Id == acc.Id).ToDictionary(x => x.Id, x => x.Name);

        foreach (var account in accounts)
            tb.InnerHtml += string.Format(
                "<option value= '{0}' {2}> {1} </option>", 
                account.Key, 
                account.Value,
                selected == account.Key ? " selected='selected' " : ""
            );

        return new MvcHtmlString(tb.ToString());
    }
0 голосов
/ 05 марта 2011

Теперь есть такой помощник:

Html.Raw("<h2>Results</h2>")
...