2012-04-24 8 views
1

こんにちは私は、新しいレコードを作成し、同じテーブルの他の関連レコードを表示するページを表示したいと考えています.....mvc3を使用して1つのビューで作成と詳細ビューを表示する

パブリッククラスHobbyDetail {

public virtual HobbyMasters Hobbymaster { get; set; } 
public virtual Course course { get; set; } 
public virtual StudyMedium StudyMedium { get; set; } 
public virtual decimal Fees { get; set; } 

}

私は私の見解は、ユーザーが新しいレコードを作成できるようにしても、既存のレコードを表示するようにして「作成」したい:私はHobbydetailクラスにデータを追加する必要が

その下に... 私は はこれを達成する

+0

@glosrob:私は、このソリューションhttp://stackoverflow.com/questions/10136560/how-to-show-two-partials-view-data-on-index-cshtml-mvc3 を追った。しかし、それはありません私のデータを保存するのに役立ちます...これはすべて私が取得するnullオブジェクトです – priya77

答えて

0

一つの方法があり、事前に ありがとう私を助けるsumbodyことができます...のviewmodelを使用したくない:あなたのコントローラでは、リストをレンダリング子アクションを作成し、その後、あなたにそのアクションをレンダリングHtml.RenderAction(またsee this)を使用して「作成」ビュー。私は以下のコードをいくつか含めました(私はこれをテストしていませんが、基本的な考え方を与えるべきです)。これを達成する唯一の方法ではないことに注意してください - 部分図see thisを使用することができます。 html.RenderActionとhtml.Action、see thisの違いも理解してください。

//In HobbyDetail Controller 
    [HTTPGet] 
    public ActionResult Create() 
    { 
     var model = new HobbyDetail(); 
     return View(model); 
    } 

    [HTTPPost] 
    public ActionResult Create(HobbyDetail model) 
    { 
     if(ModelState.isValid) 
     { 
     //logic to persist model 
     } 
     else 
     { 
     //logic when validation fails... 
     } 
    } 

    [ChildActionOnly] 
    public ActionResult ListAll() 
    { 
     List<Hobbydetail> model = //query to DB, or Data store to get Hobbydetails 
     return View(model); 
    } 

//View for ListAll 
@model List<HobbyDetail> 
{ 
Layout = null; //No layout here... 
} 

<ul> 
@foreach(var h in Model) 
{ 
<li>@h.HobbyMasters.Name</li> //for example... 
} 
</ul> 

//View for Create 
@model HobbyDetail 
... 
@{html.renderAction("ListAll");} 
関連する問題