2016-12-29 21 views
1

選択した属性を選択内のオプションに追加しようとしています:<option value="item" selected>item</option>などですが、奇妙なイベントのテキストselectedページのレンダリング時に削除されます。 searchCode == strは、その後@sel「を選択」に設定されている場合は、この中オプションで選択された属性がasp.net-core-mvcのRazorを使用して削除されました

<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> 

が、問題は、サイトがレンダリングされるとき@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> 

したがって、選択された属性は正しく計算されますが、印刷されているとおりに印刷されません。

何が起こっているかに関するアイデアはありますか?

答えて

1

バグのように見えます: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> 
+0

なぜuが(@オーバーオプションを選択しなかったSEL == "" "?": "選択") – Prasoon

+0

はもともとSELは=「選択した 'のようなものでした= ""選択された\ "選択された\" ")は読みにくいですが、発生した問題で私は私は@(*)のようなことをすることができないことを知りませんでした。 – JohnnyAce

+0

"!option"は回避策ですが、他の解決策は標準的なコードなので、質問しました。 – Prasoon

0

1)の後にリスト

var searchCriteriaObj = new SearchCriteria { searchCode = "bla bla bla" }; 
searchCriteriaObj.results = searchManager.getResults(searchCode); 
searchCriteriaObj.results.Insert(0, " Nothing Selected"); 

3)(コントローラーを渡すことによって、オブジェクトをバインド)を結合する前に、検索条件

public class SearchCriteria 
{ 
    public string searchCode { get; set; } 
    public List<string> results { get; set; } 
} 

2)デフォルトのオプションを追加するためのクラスを作成します結果を得る。

ViewBag.criteria = searchCriteriaObject; 

4)閲覧ページ:!

<select asp-for="ViewBag.criteria.searchCode" 
     asp-items="ViewBag.criteria.results"> 
</select> 
関連する問題