asp.net MVC3 @model в частичных представлениях - PullRequest
0 голосов
/ 14 октября 2011

В моем контроллере я выполняю инициализацию следующим образом:

using mylib.product;
using mylib.factory;

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

Как мне сделать то же самое, используя ключевое слово @model в частичном представлении?

Спасибо

Ответы [ 4 ]

1 голос
/ 14 октября 2011

Вы должны использовать модели представления:

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)
1 голос
/ 14 октября 2011

Я должен разобрать модель для просмотра по

return View("ViewName");

и в виде;

@model Project.Namespace.Class
1 голос
/ 14 октября 2011

Если вы пытаетесь добавить пространства имен / классов к вашему представлению, то это:

@using mylib.product;
0 голосов
/ 14 октября 2011

Я думаю, вам нужно перенести более одного экземпляра разных классов в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...