Asp.net Razor语法不呈现多语句代码块
大家好,我对剃须刀语法有个奇怪的问题 我用Razor语法编写了相同的代码块,只是内联表达式和多语句块有所不同 关于.cshtmlAsp.net Razor语法不呈现多语句代码块,asp.net,asp.net-mvc,visual-studio-2010,razor,html-helper,Asp.net,Asp.net Mvc,Visual Studio 2010,Razor,Html Helper,大家好,我对剃须刀语法有个奇怪的问题 我用Razor语法编写了相同的代码块,只是内联表达式和多语句块有所不同 关于.cshtml 把内容放在这里。 @Html.SubmitButton(“您在大约”) 渲染输出: Index.cshtml @{Html.SubmitButton(“索引中的OK”);} @{ SubmitButton(“您在索引中”); 复选框(“复选框”); } 渲染输出: p.S:忽略快照中的输入按钮文本。htmlhelpers仅返回值 即使在代码块内部,您
把内容放在这里。
@Html.SubmitButton(“您在大约”)
渲染输出:Index.cshtml
@{Html.SubmitButton(“索引中的OK”);}
@{
SubmitButton(“您在索引中”);
复选框(“复选框”);
}
渲染输出:
p.S:忽略快照中的输入按钮文本。htmlhelpers仅返回值
即使在代码块内部,您仍然需要@
来告诉Razor如何处理这些值(将它们打印到HTML缓冲区)
因此,在这种情况下,代码块是多余的,因为除了html帮助程序之外,没有其他代码
但是,即使有其他代码要放在块中,您仍然需要在helpers前面加上@
:
@{
var myVar = "something";
// and so on ...
@Html.SubmitButton("You are in Index");
@Html.CheckBox("A Check Box");
}
htmlhelpers仅返回值
即使在代码块内部,您仍然需要@
来告诉Razor如何处理这些值(将它们打印到HTML缓冲区)
因此,在这种情况下,代码块是多余的,因为除了html帮助程序之外,没有其他代码
但是,即使有其他代码要放在块中,您仍然需要在helpers前面加上@
:
@{
var myVar = "something";
// and so on ...
@Html.SubmitButton("You are in Index");
@Html.CheckBox("A Check Box");
}
奇怪的是,
var
语句和Html.Submit(“”
都是有效的C#语句,那么为什么要区别对待它们呢?它们实际上并没有被区别对待。如果没有@
,Html.CheckBox将执行它应该执行的操作——返回一个字符串,然后您可以捕获并处理该字符串@Html.CheckBox(…)
只是响应的简写。Write(Html.CheckBox(…)
所以简单点说,任何我想呈现为Html的东西,我都可以在上面加上@
符号?我相信任何可以接受.ToString()
的c值都应该是这样的。所以在我的代码中,您可以这样输出@myVar
。Razor识别HTML标记,并将自动输出它们,而无需@或响应。Write
,但纯文本(不包含任何周围的标记标记)需要@for Razor才能理解。更多信息:这很奇怪,var
语句和HTML.Submit(“”)
这两个都是有效的C#语句,那么为什么要区别对待它们呢?它们实际上并没有被区别对待。如果没有@
,Html.CheckBox将执行它应该执行的操作——返回一个字符串,然后您可以捕获并处理该字符串@Html.CheckBox(…)
只是响应的简写。Write(Html.CheckBox(…)
所以简单点说,任何我想呈现为Html的东西,我都可以在上面加上@
符号?我相信任何可以接受.ToString()
的c值都应该是这样的。所以在我的代码中,您可以这样输出@myVar
。Razor识别HTML标记,并将自动输出它们,而无需@或响应。写入,但纯文本(不包含任何周围的标记标记)需要@for Razor才能理解。更多信息:
@{
var myVar = "something";
// and so on ...
@Html.SubmitButton("You are in Index");
@Html.CheckBox("A Check Box");
}