【问题标题】:Razor Core 2 Output variable inside html taghtml标签内的Razor Core 2输出变量
【发布时间】:2018-09-27 10:28:06
【问题描述】:

我似乎无法在标签内输出 var。我曾经像下面 MVC2 razor 中的代码那样做。但是现在看起来标签看起来像是某种保留标签。

<select class="form-control" id="CompanyId" name="CompanyId">
    @{ 
        foreach (var item in Model.Companies)
        {
            var selected = "";

            if (item.CompanyId == Model.CompanyId)
            {
                selected = "selected";
            }

            <option value="@item.CompanyId" @selected>@item.Name</option>
        }
    }
</select>

【问题讨论】:

    标签: asp.net-mvc razor asp.net-core-2.1


    【解决方案1】:

    尝试以下不同的方法:

    <select class="form-control" id="CompanyId" name="CompanyId">
        @{ 
            foreach (var item in Model.Companies)
            {
                if (item.CompanyId == Model.CompanyId)
                {
                    <option value="@item.CompanyId" selected>@item.Name</option>
                }
                else
                {
                    <option value="@item.CompanyId">@item.Name</option>
                }
            }
        }
    </select>
    

    【讨论】:

      【解决方案2】:

      这不是写剃刀的正确方法,你把它当作 HTML 文本。在属性中使用布尔值,当它评估为 true 时它会很好地使用该属性,如果为 false(或 null)则根本不会渲染属性。

      <select class="form-control" id="CompanyId" name="CompanyId">
          @foreach (var item in Model.Companies)
          {
              <option value="@item.CompanyId" selected="@(item.CompanyId == Model.CompanyId)">@item.Name</option>
          }
      </select>
      

      但是你应该改用标签助手和模型绑定,这会让你的代码更容易维护。

      查看

      @model HomeViewModel
      
      <select class="form-control" asp-for="CompanyId" asp-items="Model.Companies"></select>
      

      模型 (假设选择选项是静态的,否则填充在控制器内部)

      public class HomeViewModel
      {
          public string CompanyId { get; set; }
      
          public readonly List<SelectListItem> Companies = new List<SelectListItem>()
          {
              new SelectListItem("Microsoft", "Microsoft"),
              new SelectListItem { Value = "Yahoo", Text = "Yahoo" },
              new SelectListItem { Value = "Google", Text = "Google", Disabled = true, Selected = false }
          };
      }
      

      控制器

      public IActionResult Index()
      {
          HomeViewModel model = new HomeViewModel
          {
              CompanyId = "Yahoo"
          };
          return View(model);
      }
      

      【讨论】:

        猜你喜欢
        • 2017-11-24
        • 2019-04-02
        • 2019-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多