Почему в ASP.Net MVC 2.0 отсутствует интеллектуальный смысл при назначении значений модели для JavaScript? - PullRequest
8 голосов
/ 21 августа 2010

Я пытаюсь добавить некоторые свойства Model в мой JavaScript на странице содержимого:

$(document).ready(function () {
    createPager(1, <%=Model.TotalPages %>);
    createUnprocessedPager(1, <%=Model.TotalUnprocessedPages %>);
});

Кто-нибудь знает, если это задумано? Разве вы не должны объединять свойства модели с JavaScript? Или это ошибка?

Это работает как ожидалось. Однако у меня нет никаких Intellisense в тегах <% ... %> при написании кода. Если я напишу какой-либо код в тегах <script>, то нет Intellisense. Если я пройду прямо под тегом </script> и введу <% Model.... %>, тогда boom , у меня снова будет Intellisense.

ОБНОВЛЕНИЕ: 22.10.2010

Просто прочитайте Последнее сообщение в блоге Скотта Гатри и похоже, что эта функциональность скоро появится в следующем выпуске ASP.Net MVC 3 (возможно, и для бета-версии):

Примечание. Код / разметка Visual Studio Intellisense и Colorization в пределах Файлы бритвы еще не включены с бета в начале этого месяца. Вы будете увидеть это показать через несколько недель, хотя - и он будет поддерживать полный код intellisense для HTML, JavaScript, CSS и код C # / VB в файлах Razor.

Ответы [ 2 ]

5 голосов
/ 21 августа 2010

Думаю, нет подсветки синтаксиса. Не уверен, что это ошибка или особенность, но AFAIK, комбинирование кода таким способом не является хорошей практикой. Обычно встроенный JavaScript не является хорошей практикой, но если вы пойдете с ним, объедините свойства модели с ним, а затем решите извлечь сценарии в отдельный файл js, ваш код сломается. Поэтому довольно часто заполнять скрытые поля свойствами вашей модели и читать их в js с помощью jQuery, например ::

<input type="hidden" id="valTotalPages" value="<%=Model.TotalPages %>" />
<input type="hidden" id="valTotalUnprocessedPages" value="<%=Model.TotalUnprocessedPages %>" />

... 

// in js
$(document).ready(function () {
    createPager(1, $("#valTotalPages").val());
    createUnprocessedPager(1, $("#valTotalUnprocessedPages").val());
});

Таким образом, отсутствие подсветки синтаксиса и intellisense может быть ошибкой, но может также препятствовать определенным шаблонам кода.

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

Вы потеряете свой Intellisense во взглядах внутри кавычек "" как атрибуты.

<input type="text" value="<%= DateTime.Today.ToShortDateString() %>" />

или если он появляется внутри блоков Javascript.

<script type="text/javascript">
    <%= DateTime.Today.ToShortDateString() %>
    </script>

По моему мнению, в этих сценариях должен присутствовать Intellisense, поэтому я бы сказал, что это ошибка, и надеюсь, что будущие обновления Visual Studio устранят ее и устранят.

...