Asp.net mvc MVC3,调用此HTML的最佳方式
在MVC 3中创建一个站点,我在设计的几个部分中使用了这个代码片段。这是一个设计代码,为站点上的模块创建一个头部。 现在想知道这是否是调用此代码段的最佳方式?我应该使用助手还是有更好的方法 今天我喜欢这样:Asp.net mvc MVC3,调用此HTML的最佳方式,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,在MVC 3中创建一个站点,我在设计的几个部分中使用了这个代码片段。这是一个设计代码,为站点上的模块创建一个头部。 现在想知道这是否是调用此代码段的最佳方式?我应该使用助手还是有更好的方法 今天我喜欢这样: public static IHtmlString FrameModuleHeader(this HtmlHelper helper, int Type, string Headline) { StringBuilder html = new StringBu
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());
}
然后通过以下方式调用视图中的“我的HTML助手”:
@FrameModuleHeader1,我的标题
谢谢!
/迈克真的没有推荐的方法。你做这件事的方式很干净。所以我认为没有理由改变它 确实没有推荐的方法。你做这件事的方式很干净。所以我认为没有理由改变它 我可能会使用一个局部视图或一个显示模板来代替HTML助手,因为在C代码中填充这么多HTML看起来很难看 例如,我有一个视图模型:
public class SomeViewModel
{
public int Type { get; set; }
public string Headline { get; set; }
}
以及部分:
@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>
当然,这并不意味着你的HTML助手不能工作。只是通常应该使用HTML助手来生成HTML的小片段,在这个特定的示例中,情况似乎并非如此。此外,如果在视图中使用HTML intellisense,可能会帮助您识别未关闭的标记、格式不正确的HTML、。。。而在C里面,一切都是一个巨大的神奇字符串
如果您决定使用HTML helper,还有最后一句话:请确保在将标题字符串放入字符串生成器之前对其进行HTML编码,否则您可能会得到错误的XSS惊喜。我可能会使用一个局部视图或显示模板来代替HTML helper,因为在C代码中填充了太多HTML看起来很丑 例如,我有一个视图模型:
public class SomeViewModel
{
public int Type { get; set; }
public string Headline { get; set; }
}
以及部分:
@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>
当然,这并不意味着你的HTML助手不能工作。只是通常应该使用HTML助手来生成HTML的小片段,在这个特定的示例中,情况似乎并非如此。此外,如果在视图中使用HTML intellisense,可能会帮助您识别未关闭的标记、格式不正确的HTML、。。。而在C里面,一切都是一个巨大的神奇字符串
如果您决定使用HTML助手,还有最后一句话:请确保在将标题字符串放入字符串生成器之前对其进行HTML编码,否则您可能会得到错误的XSS惊喜。另一种选择是使用局部视图。您可以将其放在/Views/Shared中,以便对所有内容都可用。这样做很好的一个原因是,它可以更容易地编辑,而无需推出新的代码库。如果此输出从未更改,则可能不需要更改。另一个选项是使用局部视图。您可以将其放在/Views/Shared中,以便对所有内容都可用。这样做很好的一个原因是,它可以更容易地编辑,而无需推出新的代码库。如果此输出从未更改,则可能不需要更改。当然,您可以通过删除不必要的html标记来解决因更改而导致的代码膨胀
public static IHtmlString FrameModuleHeader(this HtmlHelper helper, int Type, string Headline)
{
StringBuilder html = new StringBuilder();
html.Append("<div class='module_top'>");
html.Append("<h4 class='module_top_middle_" + Type + "'>" + HtmlEncode(Headline) + "</h4>");
html.Append("</div>");
return MvcHtmlString.Create(html.ToString());
}
当然,您可以通过删除不必要的html标记来解决由于以下原因导致的代码膨胀
public static IHtmlString FrameModuleHeader(this HtmlHelper helper, int Type, string Headline)
{
StringBuilder html = new StringBuilder();
html.Append("<div class='module_top'>");
html.Append("<h4 class='module_top_middle_" + Type + "'>" + HtmlEncode(Headline) + "</h4>");
html.Append("</div>");
return MvcHtmlString.Create(html.ToString());
}