ASP.Net MVC, Динамическое свойство и EditorFor / LabelFor - PullRequest
3 голосов
/ 20 декабря 2010

Я использую MVC 3 с Razor и использую новое динамическое свойство ViewBag. Я хотел бы использовать свойство ViewBag с помощниками EditorFor / LabelFor Html, но не могу понять синтаксис.

Вид имеет набор @model, но объект, который я пытаюсь использовать, не является частью этой модели. Я знаю, что могу создать ViewModel, но это не то, что мне нужно.

Может кто-нибудь помочь?

Контроллер:

   var myModel= _repo.GetModel(id);
   var newComment = new Comment();

   ViewBag.NewComment = newComment;

   return View(myModel);

Вид:

@model Models.MyModel

@(Html.EditorFor(ViewBag.NewComment.Comment))

Ответы [ 3 ]

5 голосов
/ 10 февраля 2011

Я не пробовал, но это должно сработать, я думаю.

@(EditorFor(m => ViewBag.NewComment)

Можно использовать синтаксис Linq-to-SQL, но использовать совсем другой объект справа.

1 голос
/ 15 мая 2014

Если по какой-то причине мне нужно использовать ViewData для передачи модели в мое представление, я делаю следующее, чтобы разрешить помощники Html.DisplayFor ().

В блоке кода представлений я приведу модель ViewDataобъект его базового типа

var newCommentModel = ( NewComment )ViewBag.NewComment;

Затем я назначаю вспомогательное выражение, используя ссылку со строгим типом

@Html.DisplayFor( model => newCommentModel )

Дерево выражений теперь содержит модель со строгим типом иDisplayTemplate отображается правильно.

1 голос
/ 21 декабря 2010

Не зная, как выглядит ваша модель комментариев, моя внутренняя реакция была бы просто сделать:

@Html.EditorFor(ViewBag.NewComment)

Однако, поскольку ViewBag является динамическим, вам может потребоваться наложить NewComment, прежде чем использовать его, чтобы получить волшебный редактор EditorFor.

@Html.EditorFor(ViewBag.NewComment as Comment)

Обновление

Подумайте, что EditorFor может принимать только выражение в качестве параметра, и это выражение должно возвращать свойство модели страницы. Я не думаю, что EditorFor или EditorForModel будут вам полезны, если вы не хотите использовать ViewModel. Рассматривали ли вы возможность замены ролей того, для чего вы используете Модель, на роль ViewBag?

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