【问题标题】:Razor is not writing my "selected" value into the pageRazor 没有将我的“选定”值写入页面
【发布时间】:2018-08-04 19:44:05
【问题描述】:

我已经设置了以下循环,它正确地填充了一个选择控件:

<select name="apisel" id="apisel" onchange="SelectedIndexChanged">
    @foreach (var item in Model.APIs)
    {

        <option value="@item.ApiID" @item.SelectedString>
            @item.ApiTitle
        </option>
    }
</select>

我正在尝试使用@item.SelectedString 将字符串“selected”添加到所选组合框项的页面中。

但是,这不起作用。因此,作为测试,我只是强制该字符串始终为“测试”,但是,页面生成的 HTML 没有出现 @item.SelectedString!另外@item.SelectedString前面的空格也不存在。

有谁知道这是为什么? Razor 是否在这里尝试做一些“聪明”的事情?

【问题讨论】:

  • 您是否尝试过将其设置为合适的 HTML?在键/值对中
  • @SamiKuhmonen 在此处添加选择的关键字有效 - 表示已选择项目

标签: c# razor asp.net-core


【解决方案1】:

新的 Tag Helpers 将覆盖您的尝试。

您可以使用! 手动为&lt;option&gt; 元素提供opt-out

<select name="apisel" id="apisel" onchange="SelectedIndexChanged">
    @foreach (var item in Model.APIs)
    {
        <!option value="@item.ApiID" @item.SelectedString>
            @item.ApiTitle
        </!option>
    }
</select><br/><br/>

【讨论】:

    【解决方案2】:

    您通常不能在 HTML 标记中输出任意字符串。 HTML 实际上是由 Razor 解析的,因为它的标签助手功能,所以它需要格式正确。如果您尝试这样做,您将收到以下错误:

    错误 RZ1031:标签助手“选项”在元素的属性声明区域中不得包含 C#。

    您可以通过在标签名称前添加! 来禁用标签助手解析:

    <!option value="@item.ApiID" @item.SelectedString>@item.ApiTitle</!option>
    

    然而,一个更好的选择是简单地使用标签助手来选择选项:你实际上不需要构造一个只包含"selected"SelectedString。相反,您可以将元素(或者更确切地说是标签助手)的 selected 属性设置为布尔值:

    <option value="@item.ApiID" selected="@item.IsSelected">@item.ApiTitle</option>
    

    这将在item.IsSelected 为真时正确设置selected 属性,或在为假时完全省略该属性。

    【讨论】:

    • 这应该是公认的答案,它在使用较新的 Razor 代码方法时解决了 OP 的答案。
    【解决方案3】:

    我是如何解决这个问题的:

    <select name="apisel" id="apisel" onchange="SelectedIndexChanged">
    @foreach (var item in Model.APIs)
    {
        @if (item.isSelected)
        {
        <option value="@item.ApiID" selected="selected">
            @item.ApiTitle
        </option>
        }
        else
        {
        <option value="@item.ApiID">
            @item.ApiTitle
        </option>
       }
    }
    

    似乎比使用 !版本

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 2019-10-20
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多