2017-11-28 8 views
0

MVC5で新しく追加されました。私は、マスターデータを取得するためにActionResultを使用し、ActionLinkでデータをシングルクリックする詳細についてJsonResultを使用して、マスターおよび詳細データをロードしようとしています。同じActionLinkを使用すると、同じコントローラ内で2つの汎用マスタと詳細が呼び出されます。C#

public JsonResult getOrderDetails(int? id) 
{ 
    List<OrderDetail> OrderDetail = new List<OrderDetail>(); 

    OrderDetail = db.OrderDetails.Where(a => a.OrderID==id).OrderBy(a => a.OrderDetialsID).ToList(); 

    return new JsonResult { Data = OrderDetail, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

public ActionResult Edit(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

    OrderMaster OrderMaster = db.OrderMasters.Find(id); 

    return View(OrderMaster); 
} 
+0

あなたが何をしたいのもう少し説明してください。これはおそらく異なって扱うことができるXY問題のように見えます。 –

+0

@ Html.ActionLink( "Edit"、 "Edit"、 "getOrderDetails"、new {id = item.OrderID}、new {id})をクリックして、ActionResultやJsonResultのような2種類のアクションを使用して、 = item.OrderID}) –

+0

しかし*なぜ*?このための要件は何ですか?最終結果は何ですか?ページが麻痺のためにAJAXクエリを実行していないのはなぜですか?マスタービューに与えられたオブジェクトに詳細を含めるのはなぜですか?なぜこれらの2つのコールが必要ですか? –

答えて

1

いいえ、これは機能しません。リンクが正確に1つのリソース(1つのコントローラ、1つのアクション)を指し示す必要があることを説明する例外がスローされます。また、それはあなたがMVCでそれをやっていると通常考えている方法ではありません。これは、マスターと詳細を個別にロードするWebFormsではありません。あなたは、代わりにこのようなことをやるべき

public ActionResult Edit(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

    var orderMaster = db.OrderMasters 
     .Where(om => om.OrderMasterId == id) 
     .Include(om => om.OrderDetails) // include the details here 
     .Single(); 

    return View(orderMaster); 
} 
関連する問題