2012-03-09 25 views
1

私はフォームでビューを持っています。そのフォームには、いくつかのテキストボックスと2つのドロップダウンリストがあります。asp.net mvc 3モデルバインドドロップダウン

これは私のViewModelです。

public class NewApplicationViewModel 
{ 
    public ApplicationData Application { get; set; } 

    //Selectlists 
    public SelectList Questionnaires { get; set; } 
    public SelectList Jobs { get; set; } 
} 

ApplicatoinDataクラスは、この

public class ApplicationData 
{ 
    [HiddenInput(DisplayValue = false)] 
    public Guid Id { get; set; } 
    [Required] 
    public ApplicantData Applicant { get; set; } 
    [Required] 
    public QuestionnaireData Questionnaire { get; set; } 
    [Required] 
    public JobData Job { get; set; } 
    public string Pdf { get; set; } 
} 

"アンケート" とTE "仕事" のように見えるがdropdownlistsから選択しなければなりません。 "ApplicationData"内のオブジェクトにドロップダウンで選択した値をバインドするにはどうすればよいですか? 完了するには、これは私のコントローラーによるフォーム提出の手続きです。

[HttpPost] 
    public ActionResult NewApplication([Bind(Prefix="Application")]ApplicationData model) 
    { 
     var application = Mapper.Map<ApplicationData, Application>(model); 
     _applicationRepository.Add(application); 
     _session.Commit(); 
     return View(); 
    } 

おかげ

+0

NewApplicationViewModelインスタンスの作成時にSelectListの選択値を指定できます。 –

答えて

3
@Html.DropdownListFor(
    x => x.Application.Questionnaire.ID, 
    Model.Questionnaires 
) 

@Html.DropdownListFor(
    x => x.Application.Job.ID, 
    Model.Jobs 
) 
1

バインドドロップダウンリストについては、下のリンクを参照してください。それはあなたにとって非常に役に立ちます。ここで

ASP.NET MVC - drop down list selection - partial views and model binding

Can't get selected drop down value to bind to view model property

あなたはまた、ViewDataをまたはViewBagに格納することができるよりも、アイテムのリストのためのモデルでプロパティを作成したくない場合。下記のサンプルコードをご覧ください。

<%= Html.DropDownList("Category.CategoryId", new SelectList((
IEnumerable<ProductManagement.Models.Category>)ViewData["CategoryList"], 
"CategoryId", "CategoryName"))%>