ASP.NET MVC 5表将对象从View传递到Controller

时间:2015-12-07 16:20:33

标签: c# asp.net-mvc razor

我还在使用我的asp.net应用程序。我有一个显示订单表的页面,我想包含"详细信息"列,所以有人可以选择订单然后查找它的详细信息。

这是我的观看代码:

<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>ID</th>
            <th>Seat</th>
            <th>Movie</th>
            <th>Date</th>
            <th>Details</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.OrderList.results)
        {
            <tr>
                <td>@item.objectId</td>
                <td>@item.Seat</td>
                <td>LOTR</td>
                <td>@item.createdAt</td>
                <td><a href="@Url.Action("Details","Orders")">Details</a></td>
            </tr>
        }
    </tbody>
</table>

Ofcourse Url.Action仅供测试。这是我的控制器方法:

 public ActionResult Details(OrderModel model)
    {

        return View(model);
    }

结果是OrderModel对象的列表。我想传递一个与所选表行对应的OrderModel对象。重点是在Details页面上显示OrderModel对象内容。有人能解释我怎么做吗?

编辑:我的模特:

OrderModel

public class OrderModel
{
    /*class representing Order data*/
    public string Seat { get; set; }
    public string objectId { get; set; }
    public DateTime? createdAt { get; set; }
    public DateTime? updatedAt { get; set; }

}

我的订单模型的根(json反序列化到对象列表所需)

public class OrderRootModel
{


    public List<OrderModel> results { get; set; }

}

我的baseviewmodel orderlist行(viewmodel在所有站点共享 - 我使用共享布局):

public OrderRootModel OrderList { get; set; }

EDIT2: 好吧,看了我的代码后我修改了它,所以详情页面收到了BaseViewModel而不是ordermodel(我使用共享布局)。

BaseViewModel:

public class BaseViewModel
{
    public OrderModel Order { get; set; }
    public OrderRootModel OrderList { get; set; }
}

OrdersController:

public ActionResult Details(OrderModel order)
    {
        BaseViewModel model = new BaseViewModel();
        model.Order = order;

        return View(model);
    }

1 个答案:

答案 0 :(得分:0)

好吧,伙计们。我想我睡眠不足,所以我的思维过程有点过时了。正如@ user1672994建议我可以将订单ID传递给详细信息视图(如果我记得在视图和控制器之间传递整个对象是不正确的。)

因此,如果有人对此感兴趣,那么这是一个解决方案:

查看:

    @foreach (var item in Model.OrderList.results)
{
    <tr>
        <td>@item.objectId</td>
        <td>@item.Seat</td>
        <td>LOTR</td>
        <td>@item.createdAt</td>
        <td><a href="@Url.Action("Details","Orders", new { id = item.objectId })">Details</a></td>
    </tr>
}

控制器:

public ActionResult Details(string id)
        {
            ApiModel data = new ApiModel();
            BaseViewModel model = new BaseViewModel();
            model.Order = data.GetOrderData(id);

            return View(model);
        }

型号:

  public OrderModel GetOrderData(string id)
{

    OrderModel model = new OrderModel();
    string url = "https://api.parse.com/1/classes/Orders" + "/" + id;
    model = JsonConvert.DeserializeObject<OrderModel>(getParseIdData(url));

    return model;

}

它完美无缺。谢谢你们。