【问题标题】:How to access a javascript variable in c# code behind without using a hidden field如何在不使用隐藏字段的情况下访问后面的 c# 代码中的 javascript 变量
【发布时间】:2017-12-13 05:27:54
【问题描述】:

我将数据存储在一个变量中并将其传递给txt_val 属性,存储为'tooltip'。我想在我的c# 代码中访问它,我该怎么做?

function closediv(val1, txt_val, grp) {
    var data = val1.split("!~!");
    var value1 = data[0];
    $("#" + txt_val).attr('tooltip', value1);            
}

我知道可以使用隐藏字段来完成,但是会检查多个 textbox 控件的值,所以如果我使用隐藏字段控件,我需要为每个文本框使用一个隐藏字段,这将导致在很多重复的代码中。有没有更好的方法可以做到这一点?谢谢

【问题讨论】:

  • 您想将数据从客户端发送回服务器端吗?为什么不使用表单发布或调用 ajax 将数据发送到后端?
  • @AfsharMohebbi 你能举个例子吗?
  • 我的意思是你最终想要将除txt_val 之外的所有数据发送回服务器,对吧?如果是,您可以一次发送所有这些。表单发布的一个示例是使用 form 元素:<form method="post" action="test">
  • @AfsharMohebbi 是的,我想发送除txt_val 之外的所有数据,但您能告诉我该怎么做吗?我的代码中已经有<form method="post" action="test">
  • 是的,我明白了。在这里,我们需要使用您原本想要避免的隐藏字段...

标签: javascript c# jquery asp.net


【解决方案1】:

您可以创建一个包含所有“文本框”控件的值的对象,并通过将其转换为 JSON 将其添加到隐藏字段中,如下所示

var extraData = {};

function closediv(val1, txt_val, grp) {
  var data = val1.split("!~!");
  var value1 = data[0];
  $("#" + txt_val).attr('tooltip', value1);
  extraData[txt_val] = value1;
  $('#hiddenFieldId').val(JSON.stringify(extraData));
}

然后在控制器上,你可以使用 JSON.net 反序列化这个 JSON。

ExtraData extraDataObj = JsonConvert.DeserializeObject<ExtraData>(extraData);

另外,如果您想在序列化extraData 时将对象的首字母大写,那么您可以使用here 的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多