在Razor / MVC3中使用引号输出HTML属性/文本的正确方法是什么?

时间:2012-03-12 11:02:27

标签: html asp.net-mvc razor

假设我的模型中有一个函数,它会生成一个基于int的样式标记

public string GetStyle(int? size){
    if(size > 99)
        return "style=\"margin: 20px;\"";
    else
        return "";
}

如果我使用

渲染出来
<li @GetStyle(123)>123</li>

输出:

<li style=""margin:20px;"">123</li>

(请注意双引号)。如果我将函数中的转义双引号更改为引号,则输出:

<li style="'margin:20px;'">123</li>

两者都不正确,如果不需要样式,我将被迫输出空样式标记。

2 个答案:

答案 0 :(得分:6)

更改方法,使其返回IHtmlString,如下所示:

public IHtmlString GetStyle(int? size)
{
    if(size > 99)
        return new HtmlString("style=\"margin: 20px;\"");
    else
        return new HtmlString("");
}

答案 1 :(得分:0)

如果您只是省略了值周围的引号,那么它们将自动为您添加。

public string GetStyle(int? size){
    if(size > 99)
        return "style=margin:20px;";
    else
        return "";
}