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

如何将C#中的字符串列表传递至JavaScript并实现字符串值匹配校验

实现方案

1. C# 字符串列表传递到JavaScript的方法

根据你的项目场景,常用两种实现方式:

场景1:Razor视图(ASP.NET MVC / Razor Pages)直接内嵌传递

这是最常用的服务端渲染场景传值方案:
首先在C#后端把列表挂载到视图上下文:

// 控制器/PageModel 代码
List<string> fruits = new List<string>{"Apple","Mango","Orange"};
// 用ViewBag传递,也可以根据项目规范用强类型视图模型传递
ViewBag.FruitList = fruits;

然后在Razor视图中,将列表序列化为JSON字符串直接输出到JS上下文,要加Html.Raw避免内容被HTML转义:

<script>
// 直接把C#列表转换为JS原生数组
const validFruits = @Html.Raw(System.Text.Json.JsonSerializer.Serialize(ViewBag.FruitList));
</script>

场景2:前端异步获取

如果是前后端分离、或者需要动态刷新列表的场景,后端新增接口返回JSON格式的水果列表,前端用fetch/axios/jQuery.ajax请求拿到数组即可。

2. 校验逻辑完善

你现有代码存在两处明显问题:

  • JS条件判断关键字if首字母大写,属于语法错误
  • 选择器closest('ui')大概率是笔误,常规列表标签为ul
  • 原有校验仅匹配固定值,可以扩展大小写兼容、合法列表校验的能力

完善后的JS代码如下:

$(document).on('click','#dvAppContent input:checkbox[id*=chkfunction]', function () {
   ToggleApplication(this);
});

function ToggleApplication(currentFunction) {
   var fruitName = $(currentFunction).closest('ul').parent('label').text().trim();    
   // 兼容大小写匹配,不需要可以去掉toLowerCase处理
   const formattedFruitName = fruitName.toLowerCase();

   // 仅需要校验是否为Apple的写法
   if (formattedFruitName === "apple") {
     return true;
   }

   // 如果需要校验是否在C#传递的合法水果列表中,用以下逻辑
   const isLegalFruit = validFruits.some(item => item.toLowerCase() === formattedFruitName);
   if (isLegalFruit) {
     // 匹配成功的业务逻辑
     return true;
   }
   // 匹配失败的业务逻辑
   return false;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:45:07