Можно ли вкладывать частичные виды?

Мне известен этот вопрос , но исходный постер принял решение, не предполагающее вложенности. Я определенно хочу вложить частичные представления (если, конечно, нет лучшего способа.)

У меня есть страница, которая может Ajax-загружать одно из нескольких частичных представлений, в зависимости от действий пользователя в основном представлении. (Представления являются частичными, поскольку я понимаю, что если вы хотите загрузить значительный дополнительный контент из вызова Ajax, вам необходимо вернуть PartialViewResult из вашего вызова.) Несколько частичных представлений имеют один общий элемент, раскрывающийся список, который я бы хотел бы уйти в собственное частичное представление.

Но это не работает. Каждое из моих частичных представлений имеет связанную модель представления, которая является их моделью. Для вложенного частичного представления я хотел бы передать значение одного поля, обнуляемого int, из модели представления родительского представления в качестве модели для вложенного частичного представления.

Но во время выполнения я получаю сообщение об ошибке, в котором говорится, что моему частичному представлению требуется Nullable , но он получил X, где X - это тип модели представления, связанной с родительским частичным представлением.

Итак, у меня двоякий вопрос:

  1. Не разрешается ли вложение частичных представлений? (В этом случае я бы хотел, чтобы фреймворк проверил ситуацию и выдал ошибку, в которой прямо говорится об этом.)

  2. Есть ли способ получить желаемый эффект от факторизованного общего элемента интерфейса, кроме как с частичный взгляд? Я рассматривал, но не пробовал создать шаблон редактирования, потому что считал, что то, что не сработает для частичных представлений, не сработает для них, но я мог ошибаться.

ETA: Я обнаружил свою проблему: когда вы передаете нулевое значение для модели в HtmlHelper.Partial или RenderPartial, механизм рендеринга заменяет модель вызывающего частичного представления вместо этого нулевого значения, предполагая, что вы просто не сделали этого. передать модель.

Что неверно в моем случае: мой Nullable имеет значение Nullable, потому что, пока он не установлен, он равен нулю! Нулевое значение имеет семантическое значение!

Но вот почему у меня была проблема.

5
задан Community 23 May 2017 в 12:31
поделиться