2012-04-17 10 views
1

こんにちは、私はMVC 3アプリケーションで働いています。私は次のコードでフォームを作成しています。MVC3 - 別のエンティティを持つフォームにポップアップ(ポスト)を追加する方法

@model Xrm.Student 
@{ 
ViewBag.Title = "Create Student Record"; 
} 
@using (Html.BeginForm("Create", "Student", FormMethod.Post)) 
{ 
    <div class="editor-label"> 
     @Html.LabelFor(model => @Model.FirstName) 
    </div> 
    <div class="editor-field">          
     @Html.EditorFor(model => @Model.FirstName) 
     @Html.ValidationMessageFor(model => @Model.FirstName) 
    </div> 
<div> 
    <input id="Submit1" type="submit" value="Submit" /> 
</div> 
} 

pubjectsを入力する必要があるFirsnameフィールドの下に新しいドロップダウンを追加したいとします。サブジェクトは異なるエンティティです。私は非常に簡単なことができますが、私はMVCの初心者です。誰でも私にそれを達成する方法を提案できますか?その後、

public class MyViewModel 
{ 
    public Student Student { get; set; } 

    [DisplayName("Subject")] 
    [Required] 
    public string SubjectId { get; set; } 

    public IEnumerable<Subject> Subjects { get; set; } 
} 

とあなたのコントローラの移入を持っていると表示するには、このビューモデルを渡します:

public ActionResult Create() 
{ 
    var model = new MyViewModel(); 
    model.Student = new Student(); 
    model.Subjects = db.Subjects; 
    return View(model); 
} 

、最終的に持っている私は、ビューモデルを定義し

おかげで、よろしく

+0

私のチュートリアルを参照してください。http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc [2]:http://blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc.aspx – RickAndMSFT

答えて

4

ビューモデルに強く入力したビュー:

SelectListに使用した"Id""Name"の値は、明らかに、ドロップダウンリストの各オプションのIDとテキストをバインドするために使用するSubjectクラスの既存のプロパティでなければなりません。

+1

正解ですが、私が変える唯一のことはViewBagにサブジェクトのコレクションを移動するには、モデル自体に属していないと思っています(アドレスモデルのcountrylistなど)。しかし、それは個人的な味の問題です、それ以外はすべてが良いです! –

+1

@GiorgioMinardi、私はあなたに同意します、彼らはモデルに属していません。それらは**ビューモデル**に属します。そのため、ビューモデルをビューモデルに追加したのは>ビューモデルはビューの要件を表しているため、このビューではサブジェクトのドロップダウンを表示する必要があります。私はViewBagを使用しません。それは弱く型付けされています。個人的に私はビューモデルを使うことを好みます。 –

+2

@ダーリン、私はビューモデルを考えていた。 Btw私はそれが味の問題だと言ったので、私は通常それに属している情報のみをビューモデルに割り当てます(私の意見では、学生のビューモデルはサブジェクトのリストを含むべきではありませんが、これは議論の余地があります)。 ViewBag。 1つの理由は、StudentViewModelをどこか別の場所に再利用したいからです。私は利用可能なサブジェクトのリストを表示したくありません。 –

関連する問題