Ответ 1
model
имеет значение undefined, что касается JavaScript. Серверный код в вашем представлении выполняется, ну, на стороне сервера. JavaScript не имеет понятия об этом. Он касается только клиентского вывода этого кода. Вы можете смешать эти два, но имейте в виду, что компоненты на стороне сервера просто там, чтобы испускать строки, которые будут частью выхода на стороне клиента.
Итак, например, если у вас есть свойство на вашей модели:
Model.SomeProperty
Тогда вы не можете использовать его непосредственно в JavaScript, например:
alert(Model.SomeProperty)
// or
alert(SomeProperty)
Это не используется синтаксис вида бритвы, чтобы сообщить движку просмотра, что здесь есть код на стороне сервера. Это синтаксически клиентский код, и клиентская сторона model
отсутствует. Поэтому вам нужно указать, что необходимо выполнить предварительную обработку на стороне сервера:
alert(@Model.SomeProperty)
Кроме того, если SomeProperty
является строкой, то имейте в виду, что вывод не будет включать в себя кавычки. Поэтому вам также необходимо предоставить их для клиентского кода:
alert('@Model.SomeProperty')
Таким образом, значение сервера SomeProperty
будет выбрано здесь, когда оно будет передано клиенту. Поэтому, если значение имеет значение "Hello World"
, то полученный код на стороне клиента будет выглядеть следующим образом:
alert('Hello World')
Главное - иметь в виду разделение между серверным кодом и кодом на стороне клиента. Все JavaScript/HTML/CSS - это только одна большая строка в отношении кода на стороне сервера. Представление по существу просто создает большую строку для отправки в браузер. После этого в браузере рендеринг на стороне клиента знает разницу между JavaScript/HTML/CSS и выполняется соответственно, задолго до того, как код на стороне сервера отсутствует.