В MVC3, работающем с механизмом просмотра бритвы, у меня были фигурные скобки, которые действительно испортили синтаксический анализ представления.
Например, если у вас есть:
@using(Html.BeginForm()){
<div>hello!</div>
<script type="text/javascript">
$(document).ready(function () { alert("ready!"); });
</script>
}
У вас могут возникнуть проблемы с фигурными скобками скрипта. Попробуйте изменить его на:
@{ Html.BeginForm(); }
<div>hello!</div>
<script type="text/javascript">
$(document).ready(function () {
alert("ready!");
});
</script>
@{ Html.EndForm(); }
Это может быть или не быть ответом на ваш вопрос, но мне потребовалась целая вечность, чтобы понять, что не так с некоторыми из моих форм. Однако я не встраивал в них скрипты... это были блоки для условной логики, которые сломали бы мне все.
РЕДАКТИРОВАТЬ Проведя небольшое исследование, я обнаружил у кого-то проблему, которая привела меня к решению: aspnet.codeplex.com/workitem/7551.
Мое сообщение фиксации (из кодовой базы, к которой у меня больше нет физического доступа) предполагает, что это могла быть плохая разметка. Разработчик, написавший оскорбительные страницы, любил использовать теги с заглавной буквы, хотя мы использовали тип документа XHTML 1.1. У него также было много условно компилируемых и/или заполняемых атрибутов. Например:
<div class="something @myHelper(someFlag)"></div>
<div @{ isSomeFlag ? <text>class="asdf"</text> : "" }></div>
Мое решение следует рассматривать как временное решение.
person
Jim Schubert
schedule
07.07.2011
alert
. - person Jim Schubert   schedule 08.07.2011@Html.BeginForm
в механизме представления Razor, вам, возможно, придется изменить способ создания этого блока (фигурные скобки могут нарушить компиляцию вашего представления). - person Jim Schubert   schedule 08.07.2011}
только вне любых тегов HTML (в контексте кода). - person SLaks   schedule 08.07.2011@using(Html.BeginForm())
. Это было сразу после официального выпуска MVC3, возможно, что-то изменилось. - person Jim Schubert   schedule 08.07.2011