Ответ 1
Попробуйте следующее:
<script type="text/javascript">
@if (Model.Employees.Count > 1)
{
@:executeJsfunction();
}
</script>
Обратите внимание на " @:"
Я хотел бы выполнить часть JavaScript, когда определенное условие истинно в моей модели представления:
<script type="text/javascript">
@if (Model.Employees.Count > 1)
{
executeJsfunction();
}
</script>
Этот код не компилируется, как мне это сделать?
Попробуйте следующее:
<script type="text/javascript">
@if (Model.Employees.Count > 1)
{
@:executeJsfunction();
}
</script>
Обратите внимание на " @:"
Используйте блок js if-else
, а не С#. Js имеет свой собственный блок if-else
.
<script type="text/javascript">
if (@Model.Employees.Count > 1)
{
executeJsfunction();
}
</script>
Если у вас более сложная JS, вы можете сделать следующее (теги script или любые теги в пределах @if не требуют дополнительного экранирования):
@if (Model.Employees.Count > 1)
{
<script type="text/javascript">
$(function() {
executeJsfunction();
});
</script>
}
Для многострочного скрипта в условном блоке бритвы вы можете использовать:
<script type="text/javascript">
@if (Model.Employees.Count > 1)
{
<text>
executeJsfunctionOne();
executeJsfunctionTwo();
executeJsfunctionThree({
"var_one": true,
"var_two": false
});
</text>
}
</script>
Это может сделать его чище и практичнее, чем добавление @: к каждой строке. Все в блоках <text></text>
отображается как скрипт.
Я знаю этот вопрос ранее, но я добавил новое решение в качестве альтернативного решения:
вы можете ввести свое значение из модели в атрибут данных выбранного элемента DOM и проверить свое состояние, проверив значение того же атрибута данных, который вы ввели при создании вашего представления.
например, проверьте следующее представление и фрагмент кода script, как это сделать:
<div id="myDiv" data-count="@Model.Employees.Count">
</div>
<script>
if($("#myDiv").data("count") > 1){
executeJsfunction();
}
</script>
В случае, если вы не хотите даже визуализировать Java-скрипт на основе какого-либо условия
определить раздел в вашем макете HTML
<html>
<body>
@RenderSection("xyz", required: false)
</body>
</html>
по вашему мнению
@if (Model.Condition)
{
@section xyz{
<script>
$(function () {
// Your Javascript
});
</script>
}
}
В моем случае я не хочу показывать свой Javascript, если эта функция не включена, также это уменьшит размер страницы