Как вставить код С# в javascript на cshtml странице MVC3 Razor
как бы я сделал эквивалент этого встроенного в JavaScript на странице aspx MVC2:
if (('<%= Model.SomeFunctionEnabled %>' == 'True')
, а также целый блок кода функции на странице просмотра Razor (cshtml) в MVC3?
Что-то вроде:
@{
foreach(var d in Model.Employees)
{
....
}
}
Что отлично работает при встраивании в HTML-страницу страницы просмотра.
Благодаря
Ответы
Ответ 1
Зачем тестировать на стороне клиента, когда вы можете сделать это на стороне сервера, и включить javascript, чтобы действовать соответственно, если тест преуспеть:
<script type="text/javascript">
@if (Model.SomeFunctionEnabled) {
<text>
// Put your javascript code here
alert('the function is enabled');
</text>
}
</script>
Ответ 2
Если вы хотите выполнить логику в JavaScript:
if ('@Model.SomeFunctionEnabled' == 'True') {
}
Но это приводит к условию, которое всегда оценивает один и тот же результат. Так что вам лучше с ответом Дарина сделать все тестирование на сервере.
Если ваш тест, однако, такой динамический, как этот, который не может быть выполнен на сервере. Вы можете получить содержимое своей переменной С# с помощью знака @
.
@{
var elementID = GetMyGeneratedElementID();
}
<div id="@elementID">...</div>
<script>
function MyAmazingJavascriptElementHandler() {
if ($("#@elementID").SomeTest()) {
DoMyAmazingJavascript();
}
}
</script>