2016-02-10 4 views
0

мне нужно, чтобы показать общее количество элементов в корзине, так что мой план был добавить частичный вид в сноске в общем файле: _Layout.cs, как это:Модель прохода для частичного просмотра до _Layout.cs?

@Html.Partial("~/Views/Shared/PartialViewShoppingCartStatus.cshtml", Model) 

Но тогда я получил красную строку под ним, и я понял, что в контроллере не было модели, переданной из метода Action. Итак, как я могу это решить? Нет контроллера для _Layout.cs! Возможно, есть и другие и лучшие решения?

+0

Один из вариантов - присвоить значение свойству «ViewBag» и использовать '@ Html.Partial (« .. », ViewBag.ItemCount)' –

+0

@StephenMuecke OK, спасибо, я попробую ... –

+0

@StephenMuecke Извините по моему глупому вопросу, но что я должен заменить «..»? –

ответ

-1

В контроллере сделать подсчет с запросом и сделать так, что в ViewData["Total"] = count; и действительно показывает, что в ваш cshtml по @ViewData["Total"]

+0

адские мужчины .... это сработало бы определенно .. почему дал минус точку –

0

Моего любимым способом сделать это создает DTO (Transfer Object Data), содержащие все модели и свойства, которые вы хотите передать от контроллера к представлению. Вы можете отправить только одну модель из контроллера в представление, но эта модель может содержать экземпляры других моделей. Более подробную информацию можно найти на asp.net website. Вы можете использовать ViewBag, но мне это не очень нравится.

Так в представлении Вы бы получить что-то вроде этого:

@Html.Partial("~/Views/Shared/PartialViewShoppingCartStatus.cshtml", MyDto.Model2) 

И в контроллере вы хотите отправить somehting как это:

class Model1 
{ 
    string title {get;set;} 
} 

class Model2 
{ 
    string name {get;set;} 
} 

class MyDto 
{ 
    MyModel1 = new Model1(); 
    MyModel2 = new Model2(); 
} 

Надеется, что это помогает

PS: Если вы решите работать с DTO, я думаю, что неплохо смотреть на что-то вроде AutoMapper, а также на то, чтобы ваш код был чище.

Смежные вопросы