что эквивалентно тегу "literal" в asp.net mvc - PullRequest
5 голосов
/ 08 августа 2009

Я перевожу веб-сайт с asp.net на asp.net mvc

на сайте asp.net есть много мест, где они имеют "буквальные" теги, и сервер генерирует кучу html и вставляет в буквальный тег.

что эквивалентно doign this в asp.net mvc. Должен ли я засунуть это в ViewData?

Ответы [ 3 ]

11 голосов
/ 08 августа 2009

Эквивалент состоит в том, чтобы не делать тот же неудачный выбор дизайна, который сделал первоначальный разработчик.

Но, поскольку мы живем в реальном мире, вы должны вставить их строки, которые содержат html, в модель презентации для конкретной страницы, а затем записать ее в поток ответов.

В вашей модели:

public class MyPageModel
{
  public string HolyCrapItsHtml {get;set;}
}

В вашем контроллере:

public ActionResult MyPage()
{
  return View(new MyPageModel
         {HolyCrapItsHtml = OldCode.GetHtmlICantBelieveIt()});
}

А на вашей странице:

<div>
  In the olden days, we'd concatenate our webpages together from strings like:
  <%= Model.HolyCrapItsHtml %>
</div>
3 голосов
/ 09 февраля 2011

У меня была такая же проблема. Не беспокойтесь о MyPageModel, просто придерживайтесь ViewData, но используйте равно, а не двоеточие.

<%= ViewData("SomeVarName") %>
1 голос
/ 11 февраля 2013

Если вы используете Razor, вы бы сделали следующее, если бы не использовали строго типизированные помощники

@Model.YourVarName

Если вы работаете со строго типизированной моделью представления, вы можете использовать помощник ValueFor ()

@Html.ValueFor(m => m.YourVarName)

Если у вас есть только несколько литералов, вы можете поместить их в ViewData, но если вы следуете истинной модели MVC, вам следует создать модель для представления с соответствующими свойствами. Учитывая, что вы портируете с существующей страницы ASP.NET, настройка новой модели для каждого нового представления / страницы может повлечь за собой значительные накладные расходы, в этом случае вставьте ее в ViewData.

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