是否有一个简单接受并返回原始html的Html助手?而不是做这样丑陋的事情:
<% if (Model.Results.Count > 0) { %><h2>Results</h2><% } %>
我想做这样的事情:
<% if (Model.Results.Count > 0) { Html.RawHtml("<h2>Results</h2>") } %>
不是很清洁,但我认为这有点改善。这样的事情存在吗?或者是否有更好的替代方法从这些转义字符中输出原始html而不是使用Html助手?
答案 0 :(得分:11)
答案 1 :(得分:5)
Response.Write应该有效。 (虽然可能有点退后一步!)你应该能够创建一个扩展方法来做到这一点。也许您可能不想使用HTML字符串,而是希望在代码using the TagBuilder中构建标记。
答案 2 :(得分:1)
如果您想使用HtmlHelper进行任何操作,可以返回使用TabBuilder构建的MvcHtmlString
这是我使用的一个例子:
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());
}
答案 3 :(得分:0)
现在有这样的帮手:
Html.Raw("<h2>Results</h2>")