我试图将所选的属性添加到select中的一个选项中,类似于:<option value="item" selected>item</option>,但在一个奇怪的事件中,文本selected在呈现页面时被删除。
例如,我有以下代码:
<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属性。
例如,它应该打印:
<select>
<option value="a">a</option>
<option value="b" selected>b</option>
<option value="c">c</option>
</select>但它输出的是:
<select>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>如果我把代码改成这样:
<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>我会得到这样的东西:
<select>
<option value="a">a - </option>
<option value="b">b - selected</option>
<option value="c">c - </option>
</select>因此,所选的属性计算正确,但没有打印出来。
知道发生了什么事吗?
发布于 2016-12-29 09:25:37
这似乎是一个错误:https://github.com/aspnet/Mvc/issues/3733
我所做的是将option更改为!option。
<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>发布于 2017-12-20 02:09:09
1)为搜索条件创建类
public class SearchCriteria
{
public string searchCode { get; set; }
public List<string> results { get; set; }
}2)绑定列表前添加默认选项
var searchCriteriaObj = new SearchCriteria { searchCode = "bla bla bla" };
searchCriteriaObj.results = searchManager.getResults(searchCode);
searchCriteriaObj.results.Insert(0, " Nothing Selected");3)获取结果后,传入对象(Controller)进行绑定。
ViewBag.criteria = searchCriteriaObject;4)查看页面:
<select asp-for="ViewBag.criteria.searchCode"
asp-items="ViewBag.criteria.results">
</select>https://stackoverflow.com/questions/41371967
复制相似问题