2017-07-31 17 views
-1

私のモデルは、asp.net mvc5ウェブサイトのコントローラからビューに渡されています。次に、モデルを使用してドロップダウンリストを表示し、フォームを送信するときにIDを渡します。ここに私のモデルは次のとおりです。モデルで次にHtmldropdownlistforからコントローラにパラメータを渡す

public class SiteDirectionModel 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
} 

、私は私が必要とする各項目の新しいインスタンスを追加するList<SiteDirectionModel>を使用しています。私はこれらの両方のリストを記入し、私のモデルをビューに渡します。

@model List<SiteDirectionModel> 

@using (Html.BeginForm("GetSiteRF", "Create", FormMethod.Post)) 
{ 
    @Html.DropDownListFor(x => x.name,new SelectList(Model.name,"Sites")); 
    <input type="button" value="Selectionner" class="btn btn-primary"/> 
} 

nameのIDを取得するにはどうすればよいですか?それを私のコントローラにパラメータとして渡す方法は?私が持っているような:

public ActionResult GetSiteRF(int id) 
{ 
    int newId = id; 
    //Call method to searchId ... 
    return View("CreateADUser"); 
} 
+0

はい、正確にあなたのモデルは格好良いされていません。 –

+0

'DropDownListFor()'は、値の集合ではなく、単一の値にバインドしてポストバックします。バインディングするプロパティと 'SelectList'に同じ名前を使うことはできません。あなたのパラメータの名前は 'id'ですが、' name = "id" 'でフォームコントロールを持っていません。 –

+0

そしてそれぞれの' name'のIDはどういう意味ですか? (名前は 'string'でIDはありません) –

答えて

1

私はバインドしてドロップダウンから価値を得る方法を与えました。これであなた自身のBLを使用してください。

あなたのモデルは次のようになります。

public class Something 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class SiteDirectionModel 
{ 
    public SelectList MyDropDown { get; set; } 

    public int SelectedValue { get; set; } 
} 

あなたBLはこのようになります。

public List<Something> GetListofSomething() 
{ 
    //your logic. 

} 

Getメソッドは次のようにします。

public ActionResult MyGetMethod() 
    { 
     SiteDirectionModel model = new SiteDirectionModel(); 
     model.MyDropDown = new SelectList(GetListofSomething(), "key_field_name", "value_field_name", "default_value"); 
    } 

は、最終的にHTML

@Html.DropDownListFor(x => x.SelectedValue,Model.MyDropDown) 
関連する問題