C# 使用相同的ActionLink调用同一控制器c中的两个函数主控和详细信息#

C# 使用相同的ActionLink调用同一控制器c中的两个函数主控和详细信息#,c#,asp.net-mvc,C#,Asp.net Mvc,我是MVC5的新手。我正在尝试使用ActionResult来加载主数据和详细数据,使用JsonResult来检索主数据和详细信息,单击ActionLink来检索数据 public JsonResult getOrderDetails(int? id) { List<OrderDetail> OrderDetail = new List<OrderDetail>(); OrderDetail = db.OrderDetails.Where(a =>

我是MVC5的新手。我正在尝试使用ActionResult来加载主数据和详细数据,使用JsonResult来检索主数据和详细信息,单击ActionLink来检索数据

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);
}
public JsonResult getOrderDetails(int?id)
{
List OrderDetail=新列表();
OrderDetail=db.OrderDetails.Where(a=>a.OrderID==id).OrderBy(a=>a.OrderDetialsID.ToList();
返回新的JsonResult{Data=OrderDetail,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
}
公共行动结果编辑(int?id)
{
if(id==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
OrderMaster OrderMaster=db.OrderMasters.Find(id);
返回视图(OrderMaster);
}

不,这不起作用。它将抛出一个异常,解释链接必须恰好指向一个资源(即一个控制器,一个操作)。而且,在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);
}

请再解释一下你想做什么。这看起来像是一个XY问题,可能可以以不同的方式处理。我想加载主数据和详细数据,但通过单击@Html.ActionLink(“编辑”、“编辑”、“getOrderDetails”、新建{id=item.OrderID}、新建{id=item.OrderID})使用两种类型的操作,如ActionResult和JsonResult,但为什么?这方面的要求是什么?最终的结果是什么?为什么页面没有对defails执行AJAX查询?为什么不在提供给主视图的对象中包含详细信息?为什么您需要这两个调用?我不知道如何使用AJAX检索以进行编辑,所以尝试这样做。你能帮我吗?然后像现在给OrderMaster一样给视图提供数据。创建一个同时包含OrderMaster和OrderDetail的对象,然后从那里开始。