2016-06-21 10 views
-1

良い一日のコントローラに私はそうのようなドロップダウンリスト持っている私の見解では

をドロップダウン項目を選択します。更新

<div class="form-group row"> 
    @Html.LabelFor(model => model.Colour, new { @class = "col-lg-2 col-md-2 col-sm-2 col-xs-2" }) 
    <div class="col-lg-9 col-md-9 col-sm-9 col-xs-9"> 
     @Html.DropDownListFor(model => model.Colour, new SelectList(Model.VehicleColour, "Value", "Text", Model.Colour), new { id = "Colour", @class = "btn dropdown-toggle btn-default" }) 
    </div> 
</div> 

を。特定の条件では、選択した項目をコントローラに設定する必要があります。現在、私はそうのようにそれをすることによってこれを達成しようとしています(しかし、これは動作していない):

[HttpPost] 
public ActionResult VehicleDetails(VehicleDisplay model) 
{ 
    // This section depends on the condition and it gets the item id that I need 
    // to select in the dropdown 
    if (Session["ColourID"] != null) 
    { 
     model.Colour = long.Parse(Session["ColourID"].ToString()); 
    } 
    #endIf 

    model.VehicleColour = GetVehicleColour(); 
    foreach (SelectListItem colour in model.VehicleColour) 
    { 
     if (colour.Value == model.Colour.ToString()) 
     { 
      colour.Selected = true; 
     } 
     else 
     { 
      colour.Selected = false; 
     } 
    } 
    return PartialView("VehicleDetails", model); 
} 

GetVehicleColour()

private IEnumerable<SelectListItem> GetVehicleColour() 
{ 
    var colours = new List<SelectListItem>(); 
    var colour = new SelectListItem() 
    { 
     Value = "0", 
     Text = "Please select a Vehicle Colour", 
     Selected = true 
    }; 

    /* Get Colour values fron database */ 

    foreach (ColorObject method in dbList) 
    { 
     colour = new SelectListItem() 
     { 
      Value = method.Id.ToString(), 
      Text = method.Description, 
      Selected = false 
     }; 
     colours.Add(colour); 
    } 
    return colours; 
} 

VehicleModel

[Required] 
[Display(Name = "Colour ")] 
[Range(1, long.MaxValue, ErrorMessage = "Please select a Vehicle Colour")] 
public long? Colour { get; set; } 

public IEnumerable<SelectListItem> VehicleColour { get; set; } 

することができますあなたはこの問題で私を助けてください?

+0

(その内部で新しい 'のIEnumerable を' '生成DropDownListFor()'メソッドでは無視)モデルプロパティにバインドするときSelectListItem' 'の' Selected'プロパティを設定しない点はありません。選択されているものを決定する 'Colour'の値 - オプションの値の1つと一致する場合、そのオプションが選択されます。 –

+0

'SelectList'に' Vehicle Colourを選択してください 'オプションを追加しないでください - 'labelOption'を受け入れるオーバーロードの1つを使用し、最初のものから2番目の同じ' SelectList'を生成するポイントはありません。ビューはちょうど '@ Html.DropDownListFor(m => m.Colour、Model.VehicleColour、"車色を選択してください "、新しい{@class =" btnドロップダウントグルbtn-default "})' –

+0

です。 'Selected'プロパティを削除しましたが、選択した値はまだ選択されていません – ArnoDT

答えて

0

このように試すことができます。

コントローラには、次のように記述する必要があります。

List<VehicleColour> lstColour = null; 
lstColour = GetVehicleColour(); 
ViewBag.lstColour = new SelectList(lstColour , "Colour", "Colour", selected Colour); 

あなたのビューは以下のようになります。

@Html.DropDownList("lstColour", null, new { id = "Colour", @class = "btn dropdown-toggle btn-default" }) 
+0

地球上の誰かがこれを完全に間違った答えに投票しました –

+0

@StephenMueckeこれはうまくいきます。私は多くのプロジェクトでこれを使用しました。だから、plzは確認なしに誰かのコードを判断しないでください。そして明らかに誰が投票したのかが解決策を得て、なぜ彼/彼女が投票したのです。 –

+0

あなたは答えがあればここに書いてください。誰の答えにもコメントしないでください。 –

関連する問題