我试图根据if语句显示一种形式与另一种形式。但是当它运行时,两个表单都显示,而if语句本身也显示为文字文本:
if(model.CarId == 0 || string.IsNullOrEmpty(model.Car))
{
@using (Html.BeginForm("CarModels", "Users", FormMethod.Post, new { @model = Model }))
{
<p>Car Model @Html.TextBoxFor(model => model.CarModel)</p>
<p><input type="submit" value="Find Model" /></p>
}
}
else
{
@using (Html.BeginForm("UpdateCar", "Cars", FormMethod.Post, new { @model = Model }))
{
<p>@Html.CheckBoxFor(model => model.Name) Name</p>
<p><input type="submit" value="Update" /></p>
}
}
我知道我需要一个@旁边的if但是尝试过,然后当我这样做的时候,视图就会在@if内部的其余语法上共存。
更新
以下是最终奏效的内容:
@{
if (Model.CarId == 0 || string.IsNullOrEmpty(Model.Car))
{
using (Html.BeginForm("CarModels", "Users", FormMethod.Post, new { model = Model }))
{
<p>Car Model @Html.TextBoxFor(model => model.CarModel)</p>
<p><input type="submit" value="Find Model" /></p>
}
}
else
{
using (Html.BeginForm("UpdateCar", "Cars", FormMethod.Post, new { model = Model }))
{
<p>@Html.CheckBoxFor(model => model.Name) Name</p>
<p><input type="submit" value="Update" /></p>
}
}
}
答案 0 :(得分:2)
您必须在if之前添加@并在使用之前删除它,因为它仍然被视为代码而不是标记。
答案 1 :(得分:0)
考虑更改您的代码:
@{
if (Model.CarId == 0 || string.IsNullOrEmpty(Model.Car))
{
using (Html.BeginForm("CarModels", "Users", FormMethod.Post, new { @model = Model }))
{
<p>Car Model @Html.TextBoxFor(model => model.CarModel)</p>
<p><input type="submit" value="Find Model" /></p>
}
}
else
{
using (Html.BeginForm("UpdateCar", "Cars", FormMethod.Post, new { @model = Model }))
{
<p>@Html.CheckBoxFor(model => model.Name) Name</p>
<p><input type="submit" value="Update" /></p>
}
}
}
“@ {..}”块用于插入任意数量的代码行。