如何将模型(以及其他任何东西)从视图传递到局部视图

时间:2011-10-01 11:57:28

标签: asp.net-mvc-3 partial-views

@ Html.Partial的重载需要一个模型,所以在“主”视图中我放入了this.model:

@Html.Partial("_GenericIndex", this.Model ) 

我尝试将@Model放在局部视图中以查看是否有任何显示,但我什么都没有。

那么,如何在局部视图中使用this.Model参数?我已经看到了一些可怕的解决方案,特别是在viewdata或其他东西的部分视图中。当然没有必要吗?

我只想访问我输入的Html.Partial参数

顺便说一下,我的控制器和动作是这样的:

public class TestController : Controller
{
    IRepository<Customer> customerrepo = RepositoryFactory.GetRepository<Customer>();

    //
    // GET: /Test/
    public ActionResult Index()
    {
        Customer cust = customerrepo.GetByID("1");
        return View(cust);
    }
}

2 个答案:

答案 0 :(得分:3)

只需将此行放在部分视图的顶部:

@model Customer

然后,您可以在局部视图中使用@Model,它将代表您在@Html.Partial("_GenericIndex", Model)来电中传递的对象。 即使你可以调用@ Html.Partial(“_ GenericIndex”),它会将当前页面的模型传递给部分页面。

答案 1 :(得分:1)

您是否在局部视图中设置了模型类型?

@{
    var model = ViewContext.Controller.ViewData.Model as Customer;
}