A X*_*A X 4 c# razor asp.net-core
我已经设置了以下循环,它正确地填充了一个选择控件:
<select name="apisel" id="apisel" onchange="SelectedIndexChanged">
@foreach (var item in Model.APIs)
{
<option value="@item.ApiID" @item.SelectedString>
@item.ApiTitle
</option>
}
</select>
Run Code Online (Sandbox Code Playgroud)
我正在尝试@item.SelectedString将字符串“selected”添加到所选组合框项目的页面中。
但是,这是行不通的。因此,作为测试,我只是强制该字符串始终为“测试”,但是,页面生成的 HTML 却@item.SelectedString从未出现过!另外,之前的空间@item.SelectedString也不在了。
有人知道为什么是这样吗?Razor 是否试图在这里做一些“聪明”的事情?
pok*_*oke 14
通常不能在 HTML 标记内输出任意字符串。HTML 实际上是由 Razor 解析其标签助手功能的,因此它需要格式正确。如果您尝试这样做,您只会收到以下错误:
\n\n\n\n\n错误 RZ1031:标签助手“选项”在元素的属性声明区域中不得包含 C#。
\n
!您可以通过在标签名称前面添加 来禁用标签帮助器解析:
<!option value="@item.ApiID" @item.SelectedString>@item.ApiTitle</!option>\nRun Code Online (Sandbox Code Playgroud)\n\n然而,更好的选择是简单地使用标签助手来选择选项:您实际上不需要构造一个SelectedString仅包含"selected". 相反,您可以将元素(或者更确切地说是标签助手)的属性设置为布尔值:selected
<option value="@item.ApiID" selected="@item.IsSelected">@item.ApiTitle</option>\nRun Code Online (Sandbox Code Playgroud)\n\n当为 true 时,这将正确设置selected属性item.IsSelected,或者当为 false 时完全忽略该属性。
新的标签助手会覆盖您的尝试。
您可以手动选择退出了<option>与元素!
<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/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |