对于ASP.NET,MVC应用程序,当使用带有Razor语法的grid
时,为什么我需要在行@
前面grid.GetHtml();
?
示例 -
@{
var grid = new WebGrid(Model);
@grid.GetHtml();
}
grid.GetHtml();
@{ }
与{{1}}不一致吗?
谢谢!
答案 0 :(得分:1)
使用@ {}指定应该执行某些代码,例如声明变量“grid”。
现在对于第二行,没有@,只剩下一个等于字符串的语句,甚至语法都不支持。
使用@时,该行转换为:
Response.Write(grid.GetHtml());
答案 1 :(得分:0)
使用@就像在页面上打印/写一些东西。
grid.GetHtml()
将生成所需的字符串,但此函数对打印生成的html一无所知。要做到这一点你必须像这样写
@grid.GetHtml()
有些帮助者不需要在声明之前放置@。
例如
Html.RenderPartial()
因为MVC将生成的html写入响应流。因此,此声明应包括在
中@ { }
在某些情况下阻止它返回HTML,我们应该使用“@”
为它调用print答案 2 :(得分:0)
虽然你在Razor视图引擎中完全支持你做了什么,但有时不能做得不同,最好更具体一点:
@{
var grid = new WebGrid(Model);
}
@grid.GetHtml();
因此要明确将代码与输出分开。我认为更好的代码/视图可读性是有意义的。