1

現時点では、これは私が持っているものですHomeController

[HttpPost]
public ActionResult Index(HomeFormViewModel model)
{
    ...
    ...

    TempData["Suppliers"] = service.Suppliers(model.CategoryId, model.LocationId);

    return View("Suppliers");
}

これは私が私の中に持っているものですSupplierController

public ViewResult Index()
{
    SupplierFormViewModel model = new SupplierFormViewModel();
    model.Suppliers = TempData["Suppliers"] as IEnumerable<Supplier>;

    return View(model);
}

これは私のSupplier Index.cshtmlです:

@model MyProject.Web.FormViewModels.SupplierFormViewModel

@foreach (var item in Model.Suppliers) {
  ...
  ...
}

を使用する代わりに、TempDataオブジェクトを別のコントローラーとそのビューに渡す別の方法はありますか?

4

1 に答える 1

6

これらの2つのIDをパラメーターとして渡してから、他のコントローラーからサービスクラスを呼び出してみませんか?何かのようなもの:

あなたのSupplierController方法をそのようにしてください:

public ViewResult Index(int categoryId, int locationId)
{
    SupplierFormViewModel model = new SupplierFormViewModel();
    model.Suppliers = service.Suppliers(categoryId, locationId);

    return View(model);
}

Supplierそれでは、ビュー内から何らかのリンクを介してビューを呼び出していると思いますか?できるよ:

@foreach (var item in Model.Suppliers) 
{
    @Html.ActionLink(item.SupplierName, "Index", "Supplier", new { categoryId = item.CategoryId, locationId = item.LocationId})
    //The above assumes item has a SupplierName of course, replace with the
    //text you want to display in the link
}
于 2012-04-20T10:27:35.160 に答える