如何将 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 返回值

如何将多个“CssClass”分配给asp.net中的控件

如何插入从分配给 Dictionary<int, int> 的 SQL 表中提取的数据?(ASP.Net)

asp.net如何从数据库读取一个字段的值然后赋值给一个参数

ASP.NET MVC 组合框值加载