如何从索引视图传递 id 以创建另一个控制器的方法?

How to pass id from Index View to create method of another Controller?

我在 asp.net 中使用 mvc。我想要做的是:我有一个项目控制器的视图(索引)和一个订单控制器的创建方法。索引查看代码为:

查看

@model IEnumerable<MvcHotel.Models.Items>
@{
ViewBag.Title = "Index";
//var item = Model;
}
//other markup
<div class="row">
@foreach (var item in Model)
{

<div class="col-md-2">
    <img class="img-responsive img-rounded" src="/Item/RetrieveImage/@item.Id" />
      <div>
        <p>@item.ItemName</p>
        <p>Rs.<span>@item.Price</span>

        <a href="?/order/create/@item.Id"><span class="pull-right">Order Now &nbsp;</span></a>
        <p class="text-warning"><span>@item.Rating stars</span></p>
    </div>
</div>
}
</div>

控制器

[HttpGet]
public ActionResult Create(int id)
{
    db = new DBContext();
    //var categories = new SelectList(new[] { "Rice","Karachi","Fast Food","Drinks", "Shakes" });
    ViewBag.Categories = new SelectList(db.Categories, "CategoryID", "CategoryName");
    return View();
}

[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(MvcHotel.Models.Order order)
{
    //HttpPostedFileBase file = Request.Files["ImageData"];
    //int i = UploadImageInDataBase(file, order);

    if (ModelState.IsValid)
    {
        db = new DBContext();
        db.Orders.Add(order);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return Index();

 }

现在我想传递项目ID,以便项目名称及其类别自动显示在订单创建(查看)的下拉列表中。请帮助我

创建一个模型class来为您的观点服务:

public class ItemModel
{
    public int ItemId { get; set; }
    public List<Category> Categories { get; set; }
    public SelectedCategoryId { get; set; }
}

创建一个实例并将其填充到您的控制器中,然后将其传递给 Create(int id) 操作中的 View 方法:

return View(instanceHere);

然后在你的视图中使用它:

@model ItemModel