首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用asp.net-core-mvc上的Razor在HTML上删除在选项中选择的属性

使用asp.net-core-mvc上的Razor在HTML上删除在选项中选择的属性
EN

Stack Overflow用户
提问于 2016-12-29 09:18:56
回答 2查看 785关注 0票数 2

我试图将所选的属性添加到select中的一个选项中,类似于:<option value="item" selected>item</option>,但在一个奇怪的事件中,文本selected在呈现页面时被删除。

例如,我有以下代码:

代码语言:javascript
复制
<select 
  class="form-control"
  name="searchCode">
  <option value="0"> Nothing Selected</option>
  @foreach (string str in results) {
    string sel = "";
    if (str.Equals(searchCode)) {
      sel = "selected";
    }
    <option 
      value="@str"
      @sel>
      @str
    </option>
  }
</select>

在这个示例中,如果为searchCode == str,则@sel被设置为"selected“,但问题是,当呈现站点时,不会打印@sel属性。

例如,它应该打印:

代码语言:javascript
复制
<select>
  <option value="a">a</option>
  <option value="b" selected>b</option>
  <option value="c">c</option>
</select>

但它输出的是:

代码语言:javascript
复制
<select>
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
</select>

如果我把代码改成这样:

代码语言:javascript
复制
<select 
  class="form-control"
  name="searchCode">
  <option value="0"> Nothing Selected</option>
  @foreach (string str in results) {
    string sel = "";
    if (str.Equals(searchCode)) {
      sel = "selected";
    }
    <option 
      value="@str"
      @sel>
      @str - @sel
    </option>
  }
</select>

我会得到这样的东西:

代码语言:javascript
复制
<select>
  <option value="a">a - </option>
  <option value="b">b - selected</option>
  <option value="c">c - </option>
</select>

因此,所选的属性计算正确,但没有打印出来。

知道发生了什么事吗?

EN

回答 2

Stack Overflow用户

发布于 2016-12-29 09:25:37

这似乎是一个错误:https://github.com/aspnet/Mvc/issues/3733

我所做的是将option更改为!option

代码语言:javascript
复制
<select 
  class="form-control"
  name="searchCode">
  <option value="0"> Nothing Selected</option>
  @foreach (string str in results) {
    string sel = "";
    if (str.Equals(searchCode)) {
      sel = "selected";
    }
    <!option 
      value="@str"
      @sel>
      @str - @sel
    </!option>
  }
</select>
票数 1
EN

Stack Overflow用户

发布于 2017-12-20 02:09:09

1)为搜索条件创建类

代码语言:javascript
复制
public class SearchCriteria
{
    public string searchCode { get; set; }
    public List<string> results { get; set; }
}

2)绑定列表前添加默认选项

代码语言:javascript
复制
var searchCriteriaObj = new SearchCriteria { searchCode = "bla bla bla" };
searchCriteriaObj.results = searchManager.getResults(searchCode);
searchCriteriaObj.results.Insert(0, " Nothing Selected");

3)获取结果后,传入对象(Controller)进行绑定。

代码语言:javascript
复制
ViewBag.criteria = searchCriteriaObject;

4)查看页面:

代码语言:javascript
复制
<select asp-for="ViewBag.criteria.searchCode" 
         asp-items="ViewBag.criteria.results">
</select>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41371967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档