109

Html.DropDownListFor の選択した値を設定するにはどうすればよいですか? 私はオンラインで見てきましたが、以下のように4番目のパラメーターを使用することで実現できることがわかりました:

@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0),  "Please select a country")

私の選択リストは次のように表示されます:

<select id="ShipFromCountries" name="ShipFromCountries">
     <option value="">Please select a country</option>
     <option value="GB">United Kingdom</option>
     <option value="US">United States</option>
     ...
</select>

しかし、なぜかイギリスが選択されたままなのですが、「国を選択してください」を選択してもらいたいです。

どうすればこれを達成できるか知っている人はいますか?

編集

機能にわずかな変更があったため、コードを更新しましたが、まだこの問題が発生しているようです。これは私の見解です:

@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")

1option選択したいの ID です。 のテキストでも試しましたoptionが、これも機能しません。

何か案は?

4

13 に答える 13

25

私にとっては機能していなかったので、このように機能しました:

コントローラ:

int selectedId = 1;

ViewBag.ItemsSelect = new SelectList(db.Items, "ItemId", "ItemName",selectedId);

意見:

@Html.DropDownListFor(m => m.ItemId,(SelectList)ViewBag.ItemsSelect)

JQuery:

$("document").ready(function () {
    $('#ItemId').val('@Model.ItemId');
});
于 2014-12-12T05:19:24.770 に答える
9

次のようなオブジェクトを渡すと:

new SelectList(Model, "Code", "Name", 0)

あなたが言っている: ソース ( Model) とキー ( "Code") テキスト ( "Name") と選択された値0. 0プロパティのソースに値がない可能Code性があるため、HTML ヘルパーは最初の要素を選択して、実際の selectedValue をこのコントロールに渡します。

于 2013-10-20T12:48:49.887 に答える
3

割り当てる前に、選択した値をトリムしたことを確認してください。

//モデル

public class SelectType
{
    public string Text { get; set; }
    public string Value { get; set; }
}

//コントローラ

var types = new List<SelectType>();
types.Add(new SelectType() { Value =  0, Text = "Select a Type" });
types.Add(new SelectType() { Value =  1, Text = "Family Trust" });
types.Add(new SelectType() { Value =  2, Text = "Unit Trust"});
ViewBag.PartialTypes = types;

//意見

@Html.DropDownListFor(m => m.PartialType, new SelectList(ViewBag.PartialTypes, "Value", "Text"), new { id = "Type" })
于 2013-11-15T18:43:44.347 に答える
1

クラスは忘れた方がいい

SelectList

これをコントローラーで使用します。

var customerTypes = new[] 
{ 
    new SelectListItem(){Value = "all", Text= "All"},
    new SelectListItem(){Value = "business", Text= "Business"},
    new SelectListItem(){Value = "private", Text= "Private"},
};

次の値を選択します。

var selectedCustomerType = customerTypes.FirstOrDefault(d => d.Value == "private");
if (selectedCustomerType != null)
    selectedCustomerType.Selected = true;

リストを ViewData に追加します。

ViewBag.CustomerTypes = customerTypes;

ビューでこれを使用します。

@Html.DropDownList("SectionType", (SelectListItem[])ViewBag.CustomerTypes)

-

詳細: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc

于 2014-11-27T16:23:48.020 に答える
0

空のアイテム、選択されたアイテムを含むドロップダウンへの Linq (100% 動作)
(強く型付けされ、エラーの可能性が最小) モデルの変更はバインディングに反映されます。

コントローラ

public ActionResult ManageSurveyGroup()
    {
        tbl_Survey sur = new tbl_Survey();
        sur.Survey_Est = "3";

        return View(sur);
    }

意見

        @{


    //Step One : Getting all the list
    var CompEstdList = (from ComType in db.tbl_CompEstdt orderby ComType.Comp_EstdYr select ComType).ToList();

    //Step Two  : Adding a no Value item **
    CompEstdList.Insert(0, new eDurar.Models.tbl_CompEstdt { Comp_Estdid = 0, Comp_EstdYr = "--Select Company Type--" });

    //Step Three : Setting selected Value if value is present
    var selListEstd= CompEstdList.Select(s => new SelectListItem { Text = s.Comp_EstdYr, Value = s.Comp_Estdid.ToString() });

        }
        @Html.DropDownListFor(model => model.Survey_Est, selListEstd)
        @Html.ValidationMessageFor(model => model.Survey_Est)

この方法でデータをバインドすることも可能

var selList = CompTypeList.Select(s => new SelectListItem { Text = s.CompTyp_Name, Value = s.CompTyp_Id.ToString(), Selected = s.CompTyp_Id == 3 ? true : false });
于 2016-05-10T09:12:21.010 に答える
0

私にとって一般的な解決策:)

@{
     var selectedCity = Model.Cities.Where(k => k.Id == Model.Addres.CityId).FirstOrDefault();
     if (selectedCity != null)
     { 
         @Html.DropDownListFor(model => model.Addres.CityId, new SelectList(Model.Cities, "Id", "Name", selectedCity.Id), new { @class = "form-control" })
     }
     else
     { 
         @Html.DropDownListFor(model => model.Cities, new SelectList(Model.Cities, "Id", "Name", "1"), new { @class = "form-control" })
     }
}
于 2015-07-15T08:26:14.857 に答える
0

コントローラ セクションを追加する

  ViewBag.Orders= new SelectList(db.Orders, "Id", "business", paramid);

Html セクションを追加する

   @Html.DropDownList("Orders", null)

簡単な方法

于 2015-06-22T12:54:33.077 に答える
0
public byte UserType
public string SelectUserType

1 つ取得し、別のものを設定する必要があります。選択した値は、設定しようとしている項目と同じにすることはできません。

@Html.DropDownListFor(p => p.SelectUserType, new SelectList(~~UserTypeNames, "Key", "Value",UserType))

リストに Enum ディクショナリを使用しているため、「キー」と「値」のペアがあります。

于 2018-01-16T12:59:57.637 に答える
0

これは実際には質問に対する答えではないことはわかっていますが、この投稿に出くわしたときに、ビューでその場でリストから DropDownList を初期化する方法を探していました。

私の間違いは、次のような辞書から SelectList を作成しようとしたことです。

//wrong!
@Html.DropDownListFor(m => m.Locality, new SelectList(new Dictionary<string, string>() { { Model.Locality, Model.Locality_text } }, Model.Locality, ...

次に、公式のmsdn docDropDownListForを掘り下げたところ、必ずしも必要ではSelectListなく、IEnumerable<SelectListItem>次のものが必要であることがわかりました。

//right
@Html.DropDownListFor(m => m.Locality, new List<SelectListItem>() { new SelectListItem() { Value = Model.Locality, Text = Model.Locality_text, Selected = true } }, Model.Locality, new { @class = "form-control select2ddl" })

私の場合Model.Locality、a) 唯一のアイテムであり、b) すでにSelectListItem.Selectedプロパティでそれを示しているため、as selected アイテムを省略することもできます。

ご参考までに、データソースは AJAX ページであり、SelectWoo/Select2 コントロールを使用して動的にロードされます。

于 2018-01-15T11:57:41.163 に答える