Razor视图编译报错:预期},请求技术排查
解决Razor视图的" } expected"编译错误
别担心,刚接触Razor遇到这类小问题太正常啦!咱们来看看你的代码里那些容易忽略的小细节:
错误根源:多余的@符号
Razor里的@是用来切换上下文的——从HTML上下文切换到C#代码上下文。但当你已经处于代码块(比如@{}、if判断、变量赋值这些场景)时,就不需要再额外加@来引用Model或ViewBag了,多余的@会让编译器混淆,从而抛出" } expected"这类语法错误。
你的代码里有3处多余的@:
@{ ViewBag.Title = "Edit: " + @Model.Title; }——@Model.Title里的@多余,直接写Model.Title即可if (@ViewBag.Message != "")——@ViewBag.Message里的@多余,直接写ViewBag.Messagevar messageString = @ViewBag.Message;——@ViewBag.Message里的@多余,直接写ViewBag.Message
修正后的完整代码
@model ForExample.Models.DataClass @{ ViewBag.Title = "Edit: " + Model.Title; } @if(Model != null) { if (ViewBag.Message != "") { var messageString = ViewBag.Message; if (messageString.Contains("Successfully")) { <h3 style="color:green;">@ViewBag.Message</h3> } if(!messageString.Contains("Successfully")) { <h3 style="color:red;">@ViewBag.Message</h3> } } <div> <form method="post"> @Html.HiddenFor(model => model.Id) <h4>@Html.LabelFor(ex => ex.Title)</h4> <input type="text" id="Title" name="Title" class="form-control" value="@Model.Title" /> <h4>@Html.LabelFor(ex => ex.Tags)</h4> <input type="text" id="Tags" name="Tags" class="form-control" value="@Model.Tags" /> <h4>@Html.LabelFor(ex => ex.Description)</h4> <textarea id="Description" name="Description" class="form-control" rows="10" cols="100">@Model.Description</textarea><br /> <button value="Example" id="Edit" class="btn btn-success btn-lg"> Save Changes </button> </form> </div> }
补充说明
需要注意的是,当你从代码上下文切回HTML上下文时(比如<h3>标签里的@ViewBag.Message),是需要加@的,这部分你原本的代码是正确的。
内容的提问来源于stack exchange,提问作者user8719628
相关产品推荐
相关产品推荐

