上一篇                     
               
			  如何在cshtml中快速搞定变量或方法?
- 前端开发
- 2025-05-31
- 4547
 在cshtml文件中,可以通过@{}代码块声明局部变量,如@{ int count = 0; },使用@functions{}块声明方法或属性,@functions { public string GetMessage() { return “Hello”; } },变量作用域限于当前代码块,方法可全局调用。
 
如何在 ASP.NET Core 的 cshtml 文件中声明变量
在 ASP.NET Core 的 Razor 视图(.cshtml 文件)中声明变量是常见的开发需求,但需遵循最佳实践以确保代码可读性、安全性和性能,以下是详细指南:
基础变量声明方式
Razor 语法允许在视图中嵌入 C# 代码,声明变量主要通过以下两种方式:
-  代码块声明() 
 适合声明多个变量或执行逻辑:@{ // 声明字符串变量 string welcomeMessage = "欢迎访问我们的网站!"; // 声明数值变量 int visitorCount = 1000; // 声明集合 var features = new List<string> { "响应式设计", "SEO优化", "高性能加载" }; }
-  单行声明( + 表达式) 
 适合简单局部变量:@{ var currentYear = DateTime.Now.Year; // 声明当前年份 } <p>© @currentYear 版权所有</p>
动态输出变量到 HTML
声明后的变量可直接嵌入 HTML 内容中:

@{
    string userName = "访客";
    int discountRate = 15;
}
<div class="alert alert-info">
    <h3>您好,@userName!</h3>
    <p>您今日可享 <strong>@discountRate%</strong> 专属折扣。</p>
</div> 
渲染结果:
<div class="alert alert-info">
    <h3>您好,访客!</h3>
    <p>您今日可享 <strong>15%</strong> 专属折扣。</p>
</div> 
高级场景与注意事项
-  作用域控制 - 在 块中声明的变量,作用域仅限于当前视图。
- 避免跨视图共享变量,应使用 ViewBag、ViewData或Model。
 
-  条件渲染示例 @{ bool isNewUser = true; } @if (isNewUser) { <div class="badge bg-success">新用户礼包待领取!</div> }
-  循环中的变量  <ul> @foreach (var feature in features) // 使用之前声明的 features 集合 { <li>@feature</li> } </ul>
E-A-T 优化关键点(符合百度算法)
-  专业性(Expertise) - 代码安全性:避免直接输出未过滤的用户输入,防止 XSS 攻击: @Html.Raw(userInput) // 危险!仅在内容可信时使用 @userInput // 自动编码特殊字符(推荐) 
- 逻辑分离:复杂业务逻辑应在 Controller 或 Service 层处理,视图仅负责展示。
 
- 代码安全性:避免直接输出未过滤的用户输入,防止 XSS 攻击: 
-  权威性(Authoritativeness) 引用微软官方文档作为技术依据(见文末参考)。 
-  可信度(Trustworthiness)  - 内容真实性:确保动态生成的数据来源可靠(如数据库、权威 API)。
- 性能优化:避免在视图中执行耗时操作(如数据库查询),影响页面加载速度。
 
最佳实践总结
| 场景 | 推荐方式 | 反模式 | 
|---|---|---|
| 声明局部变量 | @{ var x = 5; } | 在 HTML 标签内直接写 C# 逻辑 | 
| 输出动态内容 | <p>@variable</p> | 使用 @Html.Raw()处理非可信内容 | 
| 复杂数据处理 | 通过 Controller 传递 Model | 在视图中写 SQL 查询 | 
关键原则:保持视图简洁,变量命名语义化(如
userProfile而非var a),优先使用强类型 Model 而非ViewBag。
参考来源
- Microsoft 官方文档:Razor 语法
- ASP.NET Core 安全性最佳实践
- 百度搜索优化指南
通过合理声明和使用变量,既能提升开发效率,又能确保网站内容符合搜索引擎优化(SEO)标准,增强用户体验和页面可信度。
 
  
			