Динамическая разметка с MVC - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть разметка, хранящаяся в базе данных, которую я вынимаю и помещаю на страницу. ниже приведен базовый пример того, что у меня есть, без каких-либо вызовов БД для простоты примера;

Контроллер:

ViewData["testMarkup"] = "I was here <%= DateTime.Now.Year %>";

Вид:

<%= ViewData["testMarkup"] %>

теперь это выводит: Я был здесь и нет даты, это потому, что она игнорирует часть <% =%>, могу ли я в любом случае вывести вышеупомянутую строку и включить год?

Большое спасибо,

Ответы [ 3 ]

1 голос
/ 15 сентября 2010

Просто сделайте следующее:

ViewData["testMarkup"] = "I was here " + DateTime.Now.Year.ToString();

Или я что-то упустил? Блоки кода, такие как <%= DateTime.Now.Year %>, действительны только в том случае, если они являются частью разметки:

<div>The year is <%= DateTime.Now.Year %></div>
0 голосов
/ 15 сентября 2010

Я верю, что у Фила Хаака есть ответ на мой вопрос.http://haacked.com/archive/2009/04/22/scripted-db-views.aspx

Мне придется проверить это и посмотреть, что произойдет

0 голосов
/ 15 сентября 2010

Разметка в базе данных обрабатывается как строка, а не как код на языке просмотра, поэтому она просто записывается как текст, c # и все.

Два альтернативных метода:

1 - используйте систему шаблонов, такую ​​как

ViewData["testMarkup"] = "I was here #YEAR#";

, и используйте метод, который заменяет ваши токены (например, #YEAR#) их значениями во время рендеринга, например,

<%= ReplaceTokens((string)ViewData["testMarkup"]) %>

Где ReplaceTokens выглядит следующим образом:

public static ReplaceTokens(string s)
{
    return s.Replace("#YEAR#", DateTime.Now.Year)
}

2 - Сохраните свою разметку в частичном представлении и при необходимости сохраните имя частичного представления в базе данных.

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