繁体   English   中英

将键/值对从 javascript 传递到 C# 代码后面

[英]passing key/value pairs from javascript to C# code behind

如果我想将键/值对从 javascript 传递到 C# ASP.NET 代码后面,我应该使用查询字符串参数、隐藏值还是其他方法? 值不是来自表单,所以 jquery 序列化或 params() 不起作用..我想我必须手动序列化它?? 值来自下拉列表(名称/选定的选项文本)对

这就是 JSON 的用途。 大多数 Javascript 框架都内置了 JSON 串行器。 可能 C# 也有一个 JSON 模块(但我不知道)。 您也可以使用 XHR 发送它。

最简单、最普遍兼容的方法是将键值集合附加到查询字符串。 它将在HttpContext.Request.QueryString的 ASP.NET 中可用。

话虽如此,有多种方法可以实现您的目标。 您可以使用序列化值发送$.ajax请求。 如果想通过对表单进行序列化获取jQuery中的序列化值,可以在序列化之前在表单中添加元素。

我遇到过同样的问题。 我通过以下方式解决它:

我在JavaScriptforeach循环中准备了我的数组

var itemIdVersionCollection = [];
var itemName = row[1];
var version  = row[2];
var key = { Key: itemId , Value: version };
itemIdVersionCollection.push(key);

我的Model是这样的:

public class IdVersion
{
    public int? Key { get; set; }
    public string Value { get; set; }
}

public class SomeModel 
{
   public List<IdVersion> ItemIdVersion { get; set; } 
}

行动

Public ActionResult MethodName(SomeModel model)

可能最好将其作为 JSON 传递,然后使用 JSON 库(或 WCF)进行转换

您可以通过隐藏服务器标签并在回发按钮上包含 onclientclick 属性来实现此目的。

<input id="hdnKV" runat="server" />
<asp:Button id="btnSubmit" runat="server" onclientclick="selectKeyValues();" onclick="btnSubmit_OnClick">Submit</asp:Button> 

此 onclientclick javascript function 将从您的键值对中填充此隐藏值。

function selectKeyValues() {

    var kv= getKeyValues(),
        hiddenValue = document.getElementById('<%= hdnKV.ClientID =>');

    hiddenValue.Value = kv;

}

没有说明您拥有什么数据,但您可能可以将以下格式用于键值对。

key1=value1,key2=value2,key3=value3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM