如何将 ASP.NET 隐藏字段值分配给 JavaScript 变量?

3

你想将值传递到后端代码(C#)吗? - Johan
2个回答

3
你可以创建一个公共属性并在HTML中像以下示例一样使用它... C# (已添加标记/注释)
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要求它们将值识别为字符串数组的一部分(有效 = ['value','value'] / 无效 = [value,value])。


MyProperty 的定义中,您应该声明和初始化一个 C# 数组,并调用 return String.Join(",", myArray); - Mario J Vargas
你可以更好。你可以创建并返回Choices属性中可选项的连接数组,并摆脱setter。例如:public string Choices { get { var choices = new [] {"'choice1'", "'choice2'", "'choice3'"}; return String.Join(",", choices); } } - Mario J Vargas
这并不更好,只是在getter中硬编码逻辑,使属性变得僵硬和不灵活。由于您不知道他们将如何在代码中设置值,最好让它对其自己的实现保持开放状态。使用简单属性也更容易让初学者理解。 - Zachary
这就是重构发挥作用的地方。理念是让 String.Join 远离 Page_Load。那是我的唯一抱怨,因为该逻辑应属于属性而非 Page_Load。例如,如果值列表更改了,那么您将最终得到第二个 String.Join,这违反了“DRY”原则。 - Mario J Vargas

0

隐藏:

values: [
        $('hidden1').val(),
        $('hidden2').val(),
        $('hidden3').val()];

或者 C#(MVC):

values: [
        '@model.var1',
        '@model.var2',
        '@model.var3'];

这个解决方案不够灵活,也没有解决问题。 - Mario J Vargas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接