“@”字符后出现意外的“using”关键字

时间:2016-08-02 18:56:29

标签: c# asp.net asp.net-mvc

如果我运行我的代码,我会看到错误:

  

“@”字符后出现意外的“使用”关键字。一旦进入代码内部,您就不需要像“使用”这样的结构加上“@”前缀。

这是我的代码:

@model IEnumerable<Quests.Models.Entities.Diagram>

@if(Model.Select(x => x.Rank).Where(x => x == "Podstawowy").Count() > 0)
{
    Html.Partial("DiagramsTable", Model.Where(x => x.Rank == "Podstawowy"));
}

错误显示,Html.Partial生成错误。 我尝试了很多解决方案而且找不到。

从控制器我发送模型IEnumerable<Diagram>

我在代码中看不到任何“using”关键字,它有4行。那就完了。

我的DiagramTable.cshtml:

@model IEnumerable<Quests.Models.Entities.Diagram>

<div class="panel panel-primary">
    <div class="panel-heading">
        <h3 class="panel-title">@Model.FirstOrDefault().Rank</h3>
    </div>
    <div class="panel-body">
        <table class="table text-center">
            <thead>
                <tr>
                    <td>Element</td>
                    <td>Poziom</td>
                </tr>
            </thead>
            <tbody>
                @foreach (var diagram in Model)
                {
                    <tr class="@diagram.DiagramColorInfo()">
                        <td>@diagram.Element</td>
                        <td>@diagram.Level.ToString()</td>
                        <td>
                            @if (diagram.Have == false)
                            {
                                @using (Html.BeginForm("SetHave", "Diagram", FormMethod.Post, new { onsubmit = "return confirm('Ustawić posiadanie schematu?');" }))
                                {
                                    @Html.Hidden("DiagramID", diagram.DiagramID)
                                    <input type="submit" class="btn btn-warning" value="Zdobyto" />
                                }
                            }
                            else if ((diagram.Crafted == false) && (diagram.Have == true))
                            {
                                @using (Html.BeginForm("SetCrafted", "Diagram", FormMethod.Post, new { onsubmit = "return confirm('Ustawić posiadanie schematu?');" }))
                                {
                                    @Html.Hidden("DiagramID", diagram.DiagramID)
                                    <input type="submit" class="btn btn-success" value="Stworzono" />
                                }
                            }
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</div>

2 个答案:

答案 0 :(得分:1)

从以下代码行中删除@字符:

@using (Html.BeginForm("SetHave", "Diagram", FormMethod.Post, new { onsubmit = "return confirm('Ustawić posiadanie schematu?');" })) 

@using (Html.BeginForm("SetCrafted", "Diagram", FormMethod.Post, new { onsubmit = "return confirm('Ustawić posiadanie schematu?');" }))

当您在Visual Studio中出现此错误时,您只需双击它,它将转到包含不需要的@字符的代码行:< / p>

Visual Studio Error List

答案 1 :(得分:1)

在大多数Razor表示法操作符上,您不需要使用另一个&#34; @&#34;在同一范围内。

@if(something)
{          
      @Html.Hidden("InputID", model.Field) // this will show an error, due the previous "@" of "@if"            
}

你可以通过删除以下&#34; @&#34;来解决这个问题。范围内的运算符:

@if(something)
{
     Html.Hidden("InputID", model.Field)
}

修改1

但是,如果您之前的&#34; @operator {&#34;你应该在下面的指令中再次使用@。

 @if(something)
{
     <div>
          @Html.Hidden("InputID", model.Field)   
          //now you need to use the @ again due the <div> tag
     </div>
}