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

ror*_*yok 7 html asp.net-mvc razor

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

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

如果我使用它来渲染它

<li @GetStyle(123)>123</li>
Run Code Online (Sandbox Code Playgroud)

它输出这个:

<li style=""margin:20px;"">123</li>
Run Code Online (Sandbox Code Playgroud)

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

<li style="'margin:20px;'">123</li>
Run Code Online (Sandbox Code Playgroud)

两者都不正确,如果不需要样式,我不得不输出空样式标记.

小智 6

更改您的方法,以便它返回一个IHtmlString,如下所示:

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