0

我是 mvc 的新手,正在尝试学习。我想在 ViewBag.Success 为空或为空时显示一个表单,但如果 ViewBag.Success 为真,那么我想呈现部分视图。

这是我的代码

<div id="mydiv">
    @if (ViewBag.Success != null && ViewBag.Success == true) //Show the message
    { 
        Html.RenderPartial("Message"); 
    } 
    else 
    {
        @using (Html.BeginForm("Save", "Game", FormMethod.Post, new { @Id = "Form1" }))
        {
            <table border="0">
                <tr>
                    <td>
                        Name :
                    </td>
                    <td>
                        <input name="name" type="text" />
                    </td>
                </tr>
                <tr>
                    <td>
                        Salary :
                    </td>
                    <td>
                        <input name="salary" type="text" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input name="btnSubmit" type="submit" value="Save" />
                    </td>
                </tr>
            </table>
        }
    }
</div>

当我像 预期的“{”一样运行时收到的错误消息但找到了一个“/”。块语句必须包含在“{”和“}”中。您不能在 CSHTML 页面中使用单语句控制流语句。例如,以下是不允许的:

我做错了什么无法理解。请帮助和指导。谢谢

4

1 回答 1

1

@仅当您的代码包含在 HTML 元素中时才需要符号。该using语句不需要,@因为它是您的 if else 块的直接继承者。

例子:

<div> <!-- html tag -->
    @if(something == somethingElse) // requires @ because direct decedent of html tag <div>
    {
    <p>
        @for (var i=0; i < len; i++) // requires @ because direct decedent of html tag <p>
        {
        if(i == 1) // doesnt require @, not decedent of any HTML tag, instead direct decedent of another razor statement (for)
            {
                //do something
            }
        }
    </p>
    }
</div>

@标志用于区分简单的字符串/HTML 和 razor 语句。只有在 HTML 代码之间编写 C# 代码时才需要它。但是当您开始一个 C# 代码块时,ASP.NET MVC 视图引擎足够智能,可以理解后面的代码是 C# 而不仅仅是一些字符串。

于 2013-09-13T12:15:04.610 回答