【问题标题】:How to assign ASP.NET hidden field value to JavaScript variable?如何将 ASP.NET 隐藏字段值分配给 JavaScript 变量?
【发布时间】:2012-02-18 00:51:56
【问题描述】:

以下是取自的代码 sn-ps http://pietschsoft.com/post/2011/09/09/Tag-Editor-Field-using-jQuery-similar-to-StackOverflow.aspx

// pre-selected tags
values: [
    'javascript',
    'css',
    'jquery'];  

我想为 values 分配一些隐藏字段或 C# 变量,请帮忙,因为我不具备 JavaScript/jQuery 方面的专业知识。

【问题讨论】:

  • 是否要将值传递给代码隐藏 (c#)?

标签: c# javascript jquery asp.net asp.net-ajax


【解决方案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'];

【讨论】:

  • 这个方案不够灵活,不能解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2014-04-23
  • 1970-01-01
  • 2014-03-04
  • 2011-02-25
  • 2020-10-15
  • 1970-01-01
相关资源
最近更新 更多