You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor的script标签中添加C#条件的语法及多行JS优化问询

在Razor的script标签中添加C#条件的最优写法

在Razor的cshtml文件中,script标签内嵌入C#条件逻辑的核心是利用Razor原生代码块语法,无需过度依赖Html.Raw或三元表达式(仅极简场景适用),以下是针对不同场景的更优写法:

先看你的两种尝试的优化空间

  • 尝试1:可行但冗余,Html.Raw在无特殊转义需求时完全可以省略,Razor会自动识别代码块内的JS内容并输出。
  • 尝试2:适合极简单语句场景,但面对多行JS代码时,拼接字符串的方式会大幅降低可读性和可维护性。

基础单语句场景

直接用@if代码块包裹JS代码即可,写法简洁直观:

@section scripts{
    <script>
        $(document).ready(function() {
            @if (Model.IsAdding)
            {
                window.scrollTo(0, document.body.scrollHeight);
            }
        });
    </script>
}

多行JavaScript代码场景

无需将多行JS拼接成字符串,直接在@if代码块内编写完整的多行JS逻辑,Razor会完整输出所有内容:

@section scripts{
    <script>
        $(document).ready(function() {
            @if (Model.IsAdding)
            {
                // 多行JS示例:平滑滚动到底部+日志输出
                const scrollTarget = document.body.scrollHeight;
                window.scrollTo({
                    top: scrollTarget,
                    behavior: 'smooth'
                });
                console.log('已滚动至页面底部');
            }
        });
    </script>
}

带else分支的场景

直接扩展@if结构,逻辑清晰易维护:

@section scripts{
    <script>
        $(document).ready(function() {
            @if (Model.IsAdding)
            {
                window.scrollTo(0, document.body.scrollHeight);
            }
            else
            {
                window.scrollTo(0, 0); // 添加时滚到底部,否则回到顶部
            }
        });
    </script>
}

分离C#与JS逻辑的进阶写法

如果逻辑更复杂,可以先将C#模型属性转换为JS变量,再用纯JS处理条件,降低耦合度:

@section scripts{
    <script>
        // 将C#布尔值转为JS原生布尔值
        const isAdding = @Model.IsAdding.ToString().ToLower();
        
        $(document).ready(function() {
            if (isAdding) {
                window.scrollTo(0, document.body.scrollHeight);
            }
        });
    </script>
}

内容的提问来源于stack exchange,提问作者napsebefya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:57:20