部分视图中的asp.net MVC3 @model

时间:2011-10-13 20:13:04

标签: asp.net-mvc-3 model controller partial-views keyword

在我的控制器中,我做了这样的初始化:

using mylib.product;
using mylib.factory;

product p = new product();
factory f = new factory(p);

如何在局部视图中使用@model关键字做同样的事情?

由于

4 个答案:

答案 0 :(得分:1)

如果您正在尝试添加名称空间/类,那么它就是:

@using mylib.product;

答案 1 :(得分:1)

我应该通过

将模型解析为视图
return View("ViewName");

并在视图中;

@model Project.Namespace.Class

答案 2 :(得分:1)

您应该使用视图模型:

public class MyViewModel
{
    public string Name { get; set; }
    public string Address { get; set; }
}

将从控制器操作传递给视图:

public ActionResult Index()
{
    product p = new product(); 
    factory f = new factory(p);   
    var model = new MyViewModel
    {
        Name = p.Name,
        Address = f.Address
    }
}

然后您的视图将强烈输入此视图模型:

@model MyViewModel
@Html.DisplayFor(x => x.Name)
@Html.DisplayFor(x => x.Address)

答案 3 :(得分:0)

我认为您需要将多个不同类的实例传输到View。(我是对的吗?)如果是,我建议使用ViewBag。像这样:

// Controller
=========
product p = new product(); 
factory f = new factory(p);
....
// Add some value for p and f 
ViewBag.Product = p;
ViewBag.Factory = f;
return View();

// View
=========
var p = (product) ViewBag.Product;
var f = (factory) ViewBag.Factory;
// now you have access to p and f properties, for example:
@Html.Label(p.Name)
@Html.Label(f.Address)

不要忘记ViewBag是一个动态容器,如果要在View中使用其值,则需要将其转换为类型