Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC3,调用此HTML的最佳方式_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc MVC3,调用此HTML的最佳方式

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

在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());
    }
然后通过以下方式调用视图中的“我的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());
}