Возврат данных из контроллеров в представления в asp.net mvc - PullRequest
0 голосов
/ 12 мая 2009

Можно ли вернуть сложный тип из контроллера в представление asp.net mvc? Все примеры, которые я рассмотрел до сих пор, демонстрируют передачу простых внутренних типов, таких как int, string ....

Ответы [ 3 ]

2 голосов
/ 13 мая 2009

Вы можете создать модель представления, которая затем используется в строго типизированном представлении. Вы можете проверить этот блог пост Стивена Вальтера , который объясняет это. Я начал просто сбрасывать вещи в viewdata, но это довольно быстро сбивает с толку;).

2 голосов
/ 12 мая 2009

Вы можете передать объекту любой тип, используя словарь ViewData.

Просто вставьте в свой контроллер:

ViewData["example"] = (YourObject)data;

А потом по вашему мнению:

<%= ((YourObject)ViewData["example"]).YourProperty %>

А если вы хотите передать свой объект в качестве модели View, то:

return View("viewname", (YourObject)data);

И убедитесь, что ваш вид выглядит следующим образом:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<YourObject>" %>
0 голосов
/ 12 мая 2009

Используйте ViewModel для вашей страницы.

вы можете использовать модель представления, содержащую как сложные, так и простые объекты, например:

public class MyComplexViewModel
{
    public Address UserAddress { get; set;}
    public List<string> ValidZipCodes { get; set; }
    public string Message { get; set; }
}

Если ваше представление наследует общий ViewPage с чем-то вроде этого

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyComplexViewModel>" %>

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

<%= Html.Encode(Model.UserAddress.SomeAddressProperty) %>
<%= Html.Encode(Model.ValidZipCodes.Count) %>
<%= Html.Encode(Model.Message) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...