【问题标题】:unexpected "{" after @ in razor code in mvc4mvc4中剃须刀代码中@之后的意外“{”
【发布时间】:2015-01-05 12:25:38
【问题描述】:

我在 razor 代码的部分渲染中遇到错误,“@”字符后出现意外的“{”。一旦进入代码块的主体(@if {}、@{} 等),您就无需使用“@{”来切换到代码。

@if (Model.Count() > 0)
{
    <div id="mReserveForTodayPartial">    
        @{Html.Partial("UpdateReserveForToday.mobile");}
    </div>
}

请帮忙..!

【问题讨论】:

    标签: asp.net-mvc-4 razor razor-2


    【解决方案1】:

    Html.Partial() return MvcHtmlString 所以你必须这样做:

     @Html.Partial("UpdateReserveForToday")
    

    Html.RenderPartial() 的情况下,它写入输出流,这就是为什么它的返回类型是void,所以当使用Html.RenderPartial() 时,你必须这样做:

    @{
    
    Html.RenderPartial("UpdateReserveForToday");
    
    }
    

    【讨论】:

    • 在“@”字符后出现意外的“{”。
    • 发生此错误 严重性代码 描述 项目文件行抑制状态错误 “@”字符后出现意外的“{”。一旦进入代码块的主体(@if {}、@{} 等),您就无需使用“@{”来切换到代码。
    • 当我使用 @{Html.RenderPartial("UpdateReserveForToday");} 时,得到相同的 Rush 2707 错误
    • @TonyDong 即使在使用正确的语法后也遇到了同样的问题,奇怪的是我不得不用本地的 html 标签包装 Razor 代码。 (例如,
      {razor code}
      )。
    【解决方案2】:

    试试这个代码:

    @{  List<SelectListItem> listItems = new List<SelectListItem>();
      foreach (var item in ViewData["Subcategory"] as IEnumerable<ApplicationOneStoreForEstore.Models.tblsubcategory>)     {
        listItems.Add(new SelectListItem            {
          Text = item.subcategory_name,
          Value = Convert.ToString(item.subcategory_id)
        });
      }
    }
    

    如果你必须绑定 DropDownList 那么你必须把这段代码放在 Html.BeginForm(..) 之前

    【讨论】:

      【解决方案3】:

      下面的代码应该可以解决这个问题。

      @if (Model.Count() > 0)
      {
          <div id="mReserveForTodayPartial">    
              Html.Partial("UpdateReserveForToday.mobile");
          </div>
      }
      

      如果语句在“@{}”中可用,Razor 视图引擎可以解析代码,因此在您的代码中,“@{}”出现在“If”语句中,因此不需要再次指定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-09
        • 2014-02-22
        • 2015-07-22
        • 2018-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多