【问题标题】:How to pass model (and anything else) from view to partial view如何将模型(和其他任何东西)从视图传递到局部视图
【发布时间】:2011-10-01 11:57:27
【问题描述】:

@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);
    }
}

【问题讨论】:

  • Arg,在这个测试中,数据库中一直没有 ID 为“1”的客户对我没有帮助...
  • 谢谢大家,我现在对系统有了更深入的了解。由于我试图制作一个通用视图,我最终使用 ViewBag 动态传递模型。我还通过在我的通用控制器操作中调用它来将所选模型的模型元数据添加到 ViewBag:ModelMetadata entitymetadata = ModelMetadataProviders.Current.GetMetadataForType(() => item, typeof(T));
  • 更新:我正在切换到使用动态模型以努力获得通用视图:IList list = Repository.GetAll();动态模型=列表;返回视图(模型);

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


【解决方案1】:

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

@model Customer

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 仍在尝试,但这种方法可能很好,因为我正在尝试制作通用部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多