C# 嵌套和混合代码块的正确razor语法是什么?
我有razor语法,它嵌套并与html和javascript混合在一起 它运行得很好,除了当我使用自动代码格式时,C# 嵌套和混合代码块的正确razor语法是什么?,c#,asp.net-mvc,razor,asp.net-mvc-4,razor-2,C#,Asp.net Mvc,Razor,Asp.net Mvc 4,Razor 2,我有razor语法,它嵌套并与html和javascript混合在一起 它运行得很好,除了当我使用自动代码格式时,}总是被推到不合适的位置 @section js{ <script type="text/javascript"> $(document).ready(function () { @if (ViewBag.Searched && ViewBag.Found) {
}
总是被推到不合适的位置
@section js{
<script type="text/javascript">
$(document).ready(function () {
@if (ViewBag.Searched && ViewBag.Found)
{
@:$('#found').show(); $('#permit-info').show();
@if (ViewBag.PendingRequest)
{
@:$('#request-info').hide(); $('#report-info').show();
}
else
{
@:$('#request-info').show(); $('#report-info').hide();
}
}
else
{
@if (ViewBag.Searched)
{
@:$('#not-found').show();
} // <----- PROBLEM. this } doesn't stay at the right place.
}
});
</script>
}
@section js{
$(文档).ready(函数(){
@if(ViewBag.Searched&&ViewBag.Found)
{
@:$(“#找到”).show();$(“#许可证信息”).show();
@if(ViewBag.PendingRequest)
{
@:$(“#请求信息”).hide();$(“#报告信息”).show();
}
其他的
{
@:$(“#请求信息”).show();$(“#报告信息”).hide();
}
}
其他的
{
@如果(ViewBag.Searched)
{
@:$(“#未找到”).show();
}//您在这一行有一个额外的@
:
@if (ViewBag.Searched)
@if (ViewBag.PendingRequest)
这一行:
@if (ViewBag.Searched)
@if (ViewBag.PendingRequest)
因为您已经在razor代码中(由父级if
/else
语句控制)
实际上,这仍然会破坏格式。尽管,但如果您尝试使用
标记而不是@:
,它仍然有效。请尝试以下方法:
$(document).ready(function () {
@if (ViewBag.Searched && ViewBag.Found)
{
<text>$('#found').show(); $('#permit-info').show();</text>
if (ViewBag.PendingRequest)
{
<text>$('#request-info').hide(); $('#report-info').show();</text>
}
else
{
<text>$('#request-info').show(); $('#report-info').hide();</text>
}
}
else
{
if (ViewBag.Searched)
{
<text>$('#not-found').show();</text>
}
}
});
$(文档).ready(函数(){
@if(ViewBag.Searched&&ViewBag.Found)
{
$(“#找到”).show();$(“#许可证信息”).show();
if(ViewBag.PendingRequest)
{
$(“#请求信息”).hide();$(“#报告信息”).show();
}
其他的
{
$(“#请求信息”).show();$(“#报告信息”).hide();
}
}
其他的
{
如果(ViewBag.Searched)
{
$(“#未找到”).show();
}
}
});
请注意:Visual Studio总是将razor视图缩进得很差:)我删除了它,但仍然有同样的问题。@RayCheng我刚刚编辑过,你实际上有两行额外的@
@RayCheng它可以为我使用
标记。检查我的新编辑:)这很有效,但为什么?
不是有效的html标记,但也不是razor标记。@RayCheng
是razor的一部分,它是s是@:
的替代方案(通常对多行语句更有用)