如何将 ASP.NET 隐藏字段值分配给 JavaScript 变量?
Posted
技术标签:
【中文标题】如何将 ASP.NET 隐藏字段值分配给 JavaScript 变量?【英文标题】:How to assign ASP.NET hidden field value to JavaScript variable? 【发布时间】:2012-02-18 00:51:56 【问题描述】:以下是取自的代码 sn-ps http://pietschsoft.com/post/2011/09/09/Tag-Editor-Field-using-jQuery-similar-to-***.aspx
// pre-selected tags
values: [
'javascript',
'css',
'jquery'];
我想为 values
分配一些隐藏字段或 C# 变量,请帮忙,因为我不具备 JavaScript/jQuery 方面的专业知识。
【问题讨论】:
是否要将值传递给代码隐藏 (c#)? 【参考方案1】:您可以创建一个公共属性并在您的 html 中使用它,如下所示...
C#(按/cmets 添加)
public string Choices get; set;
protected void Page_Load(object sender, EventArgs e)
string[] choices = new string[] "'Choice 1'", "'Choice 2'", "'Choice 3'" ;
Choices = String.Join(",", choices);
JavaScript
<script type="text/javascript">
var values = [<%= Choices %>];
</script>
注意:我在值周围加上单引号,因为 JavaScript 要求它们将值识别为字符串数组的一部分 ( Valid = ['value','value'] / 无效 = [value,value])。
【讨论】:
在MyProperty
的定义中,声明并初始化一个C#数组并调用return String.Join(",", myArray);
你可以做得更好。您可以从 Choices
属性创建并返回连接的选项数组,并取消设置器。例如:public string Choices get var choices = new [] "'choice1'", "'choice2'", "'choice3'"; return String.Join(",", choices);
这不是更好,这只是在 getter 中对逻辑进行硬编码,这使得属性变得僵硬和不灵活。由于您不知道他们将如何在代码中设置值,因此最好将其留给他们自己的实现。使用简单的属性对于新手来说也更容易理解。
这就是重构发挥作用的地方。这个想法是让 String.Join 远离 Page_Load。这是我唯一的抱怨,因为该逻辑属于属性,而不是 Page_Load。例如,如果值列表发生变化怎么办。然后你会得到第二个 String.Join,它违反了“DRY”原则。【参考方案2】:
隐藏:
values: [
$('hidden1').val(),
$('hidden2').val(),
$('hidden3').val()];
或 c# (mvc):
values: [
'@model.var1',
'@model.var2',
'@model.var3'];
【讨论】:
这个方案不够灵活,不能解决问题。以上是关于如何将 ASP.NET 隐藏字段值分配给 JavaScript 变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Asp.net MVC Razor 将隐藏字段值从一个控制器传递到另一个控制器
Telerik RadWindow Javascript 向 ASP.NET 返回值
如何插入从分配给 Dictionary<int, int> 的 SQL 表中提取的数据?(ASP.Net)