我还在使用我的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);
}
答案 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;
}
它完美无缺。谢谢你们。