Mik*_*keB 1 asp.net-mvc asp.net-mvc-3
在MVC 3中创建一个站点,我有这个代码片段,我在设计的几个部分使用.这是一个为网站上的模块创建头部的设计代码.现在想知道这是否是调用此代码段的最佳方式?我应该使用助手还是有更好的方法?
今天我喜欢这样:
public static IHtmlString FrameModuleHeader(this HtmlHelper helper, int Type, string Headline)
{
StringBuilder html = new StringBuilder();
html.Append("<div class='module_top'>");
html.Append("<div class='module_top_left'></div>");
html.Append("<div class='module_top_middle_" + Type + "'><div class='module_top_headline'><h4>" + Headline + "</h4></div></div>");
html.Append("<div class='module_top_right'></div>");
html.Append("</div>");
return MvcHtmlString.Create(html.ToString());
}
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式在视图中调用我的HTML帮助程序:
@ Html.FrameModuleHeader(1,"我的标题")
谢谢!/麦克风
我可能会使用部分视图或显示模板,而不是HTML帮助器,因为在C#代码中填充如此多的HTML看起来很丑陋.
所以例如我会有一个视图模型:
public class SomeViewModel
{
public int Type { get; set; }
public string Headline { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和部分:
@model AppName.Models.SomeViewModel
<div class="module_top">
<div class="module_top_left"></div>
<div class="module_top_middle_@(Model.Type)">
<div class="module_top_headline">
<h4>@Model.Headline</h4>
</div>
</div>
<div class="module_top_right"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后:
@Html.Partial("Foo", new SomeViewModel { Type = 1, Headline = "My headline" })
Run Code Online (Sandbox Code Playgroud)
这当然并不意味着您的HTML帮助程序不起作用.通常情况下,HTML助手应该用于生成HTML的小片段,在这个特定的例子中,似乎并非如此.如果在视图中使用,你可以获得HTML intellisense,这可能有助于你识别未封闭的标签,而不是格式正确的HTML,...而在C#内部,一切都是一个很大的魔术字符串.
如果你决定使用它,那么关于你的HTML助手的最后一句话是:确保你在将这个字符串放入字符串构建器之前对其进行HTML编码,Headline否则你可能会得到糟糕的XSS意外.
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |