2012-02-08 26 views
2

ドロップダウン値に選択した値を設定しようとしています。 関連記事を参照しましたが、同じことをやっています。スティルドロップダウンには、選択した値が入力されていません。私が何が欠けているか分からない。ASP.NET MVC 2 DropDownListが選択された値を設定しない

コントローラコード:

var RegionId = new[] { 
       new RegionKeyValues { RegionId = 1, RegionValue = "A" }, 
       new RegionKeyValues { RegionId = 2, RegionValue = "B" }, 
       new RegionKeyValues { RegionId = 3, RegionValue = "D" } 
      }; 
ViewData["RegionId"] = new SelectList(RegionId, "RegionId", "RegionValue", 1); 

ビューコード:

<%= Html.DropDownList("RegionId", 
         (SelectList)ViewData["RegionId"], 
         "-- Select --")%> 
+0

私は質問が明らかではないと思います。ドロップダウンリストは、リストにRegionIdリストの内容を入力しませんか?それとも、リストが値をあらかじめ選択していると思われていて、そうではないと思いますか? –

+0

ドロップダウンには3つのレコードが設定されています。しかし、それは "A"に設定されていません – Rita

+0

いいえ..デュープではありません...関連するカップルがあります...しかし、私のドロップダウンは1の選択値に設定されていません。 – Rita

答えて

5

あるのviewmodelsなど、コントローラ、およびリストへの良いアプローチを感じます。 1つを変更し、何が起こるかを見てください。

+0

これはうまくいきました....ありがとう。 – Rita

+0

ええ、明白なものではありません、ありがとう。 – GP24

2

私は実際のビューで値を設定<%=Html.DropDownList("RegionId", new SelectList((IEnumerable)ViewData["RegionId"], "Value", "Text",1),"-- Select --")%>

を試してみました。

はまた、一般的に、私は強く型付けされたビューモデルを作成し、IEnumerable<SelecListItem>

として選択リストの値を格納するプロパティを作成します次に、あなたはRegionIdがに設定するには、実際の値になります

<%=Html.DropDownListFor(a=>a.RegionId, new SelectList(Model.Regions, "Value", "Text"),"-- Select --")`%> 

を行うことができますModel.Regionsは可能な領域のリストを格納します。一般的に

私は問題があなたのプロパティ名がRegionId、同様のViewData名であるという事実であると考え、この記事でhere

+0

私はこれを試してみましょう.... – Rita

+0

両方の応答の組み合わせが機能しました。ありがとう。 – Rita

1

リタ、

ここでは、この上で私の努力です:

モデル:

namespace MvcApplication1.Models 
{ 
    public class RegionKeyValues 
    { 
     public int RegionId { get; set; } 
     public string RegionValue { get; set; } 
    } 

    public class RegionKeyValuesViewModel 
    { 
     public int SelectedRegionId { get; set; } 
     public IEnumerable<RegionKeyValues> RegionList { get; set; } 
    } 
} 

コントローラのアクション:

public ActionResult Index() 
{ 
    var regionList = new[] { 
     new RegionKeyValues { RegionId = 1, RegionValue = "A" }, 
     new RegionKeyValues { RegionId = 2, RegionValue = "B" }, 
     new RegionKeyValues { RegionId = 3, RegionValue = "D" } 
    }; 

    var viewModel = new RegionKeyValuesViewModel 
    { 
     RegionList = regionList, 
     SelectedRegionId = 1 // hardcoded here, but in real-life, from the db 
    }; 

    ViewData.Model = viewModel; 

    return View(); 
} 

ビューコード(レイザー中):

は、
@model MvcApplication1.Models.RegionKeyValuesViewModel 
@{ 
    ViewBag.Title = "Home Page"; 
} 

@Html.DropDownListFor(a => a.SelectedRegionId, 
    new SelectList(Model.RegionList, "RegionId", "RegionValue", 
     Model.SelectedRegionId), "-- Select --") 

基本的に、私は強く型付けされたViewModelをビューに渡し、選択されたRegionIdをコントローラに設定し、それをModel.SelectedRegionIdに渡します。実際のアプリケーションでは、明らかにdbまたは他の構造からviewModelを取得しているはずです。

を考慮する価値があります。

関連する問題