2016-12-30 2 views
0

В заголовке кода cshtml я создал экземпляр viewmodel с некоторыми данными. Я могу привязывать и отображать данные из этой переменной viewmodel на родительской странице. Однако, когда я передаю переменную viewmodel в дочерний частичный вид, на странице ничего не отображается.частичный просмотр не отображается, но его viewmodel работает с родителем

@{ 
    Html.Partial("DailyReport", @DailyReportViewModel); 
} 

Любая идея, почему детское частичное представление не будет отображаться на странице или как отладить эту проблему?

ответ

2

Поскольку вы вызываете метод Partial, который возвращает MvcHtmlString, но вы не используете возвращаемое значение метода.

Вы можете сделать это вместо того, чтобы

@Html.Partial("DailyReport", @DailyReportViewModel); 

Razor теперь будет оказывать возвращаемое значение метода DailyReport.

Или вы можете использовать метод RenderPartial, который дает результат.

@{ 
    Html.RenderPartial("DailyReport", DailyReportViewModel); 
} 

DailyReportViewModel Предполагая, что является объектом типа T, к которому ваш частичный вид сильно типизированных к.

+0

DailyReport это имя частичного вида не имя метода – user7242966

+0

Когда я говорю, что это имя метода? – Shyju

+0

@ user7242966, как указано Shyju, синтаксис «at {}» создает блок кода, который работает как функция. Html.Partial - это ярлык, который вы можете использовать * снаружи * в блоке {} ", чтобы избавить вас от некоторых проблем. Используйте (at) Html.Partial вне блока «at {}». Если вы хотите использовать его внутри, используйте Html.RenderPartial, как предложил Shyju. Извините за «at» ... ограничение SO в комментариях. – Markus

0

Положите @ спереди и снимите @ с DailyReportViewModel, и он должен работать.

@Html.Partial("DailyReport", DailyReportViewModel); 
+0

Razor просто игнорирует '@', когда он выполняет код с '@ DailyReportViewModel' (как в своем вопросе). Нет разницы в выходе метода при его удалении ('@'). Проблема в том, что он не использует возвращаемое значение из метода. – Shyju

+0

Извините, что я хотел сказать, чтобы удалить этот и поместить его спереди, как в моем ответе. – CodingYoshi

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