C#-System.Web.HttpParseException在@if中包含未关闭的HTML元素时出错
我有一个简单的HTML,它根据C#-System.Web.HttpParseException在@if中包含未关闭的HTML元素时出错,c#,.net,parsing,razor,runtime-error,C#,.net,Parsing,Razor,Runtime Error,我有一个简单的HTML,它根据主题的不同而变化。IsScheduled的值(bool): 如果为假: 如果为真: razor/cshtml: <div class="row-fluid"> <div class="span6"> something1 </div> @if (topic.IsScheduled){ <div class="span6">
主题的不同而变化。IsScheduled
的值(bool):
如果为假:
如果为真:
razor/cshtml:
<div class="row-fluid">
<div class="span6">
something1
</div>
@if (topic.IsScheduled){
<div class="span6">
something3
</div>
</div>
<div class="row-fluid">
}
<div class="span6">
something2
</div>
@if (topic.IsScheduled) {
<div class="span6">
something4
</div>
}
</div>
我已经测试过了,C#给了我错误,因为div
s在@if
语句中没有关闭,而不是因为缺少开始/结束括号。如果我在If中关闭它们,或者简单地用@**
注释整个If,那么它就工作了
我如何配置忽略HttpParse
,甚至关闭它以停止解析我的HTML?
是的,我可以使用if/else,但是我会复制HTML和变量,因为解析器很笨,这是我想要避免的。您的代码看起来不错,但是Razor布局引擎还没有完全解决所有的问题,而且您确实对布局/业务逻辑有点幻想。也就是说,你试过接吻法吗?因此:
@if (topic.IsScheduled){
<div class="row-fluid">
<div class="span6">something1</div>
<div class="span6">something3</div>
</div>
<div class="row-fluid">
<div class="span6">something2</div>
<div class="span6">something4</div>
</div>
} else {
<div class="row-fluid">
<div class="span6">something1</div>
<div class="span6">something2</div>
</div>
}
@if(topic.IsScheduled){
有些事
有些事
什么
有些事
}否则{
有些事
什么
}
我在Razor上遇到过各种各样的奇怪情况,比如在运行时出现异常的空白(或缺少空白)。通常,HTML元素和Razor代码块必须正确嵌套,因此当解析器到达
@if
中的第二个
时,它认为您忘记了关闭
要修复此错误,只需在“额外”HTML标记前面加上@:
,如下所示:
<div class="row-fluid">
<div class="span6">
something1
</div>
@if (topic.IsScheduled) {
<div class="span6">
something3
</div>
@:</div>
@:<div class="row-fluid">
}
<div class="span6">
something2
</div>
@if (topic.IsScheduled) {
<div class="span6">
something4
</div>
}
</div>
有些事
@如果(主题已安排){
有些事
@:
@:
}
什么
@如果(主题已安排){
有些事
}
@:
序列告诉解析器,行的其余部分是您希望作为包含代码块的一部分包含的内容。效果很好@:
的行为类似于PHP的echo
,但不必用引号括起来,对吗?谢谢@拉斐尔德:恐怕我不熟悉PHP。也许其他人可以评论。
System.Web.HttpParseException (0x80004005): The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup. at
@if (topic.IsScheduled){
<div class="row-fluid">
<div class="span6">something1</div>
<div class="span6">something3</div>
</div>
<div class="row-fluid">
<div class="span6">something2</div>
<div class="span6">something4</div>
</div>
} else {
<div class="row-fluid">
<div class="span6">something1</div>
<div class="span6">something2</div>
</div>
}
<div class="row-fluid">
<div class="span6">
something1
</div>
@if (topic.IsScheduled) {
<div class="span6">
something3
</div>
@:</div>
@:<div class="row-fluid">
}
<div class="span6">
something2
</div>
@if (topic.IsScheduled) {
<div class="span6">
something4
</div>
}
</div>