根据逻辑显示某些表单

时间:2012-03-27 18:37:10

标签: asp.net-mvc-3

我试图根据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>
        }
    }
}

2 个答案:

答案 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>
        }
    }
}

“@ {..}”块用于插入任意数量的代码行。