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

时间:2011-06-29 19:44:02

标签: c# javascript jquery serialization

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

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

最简单,最普遍兼容的方法是将key-value-collection附加到查询字符串。它将在HttpContext.Request.QueryString的ASP.NET中提供。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

这个onclientclick javascript函数会从你的键值对中填充这个隐藏值。

function selectKeyValues() {

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

    hiddenValue.Value = kv;

}

没有说明您拥有哪些数据,但您可以使用以下格式进行键值对。

key1=value1,key2=value2,key3=value3

答案 4 :(得分:0)

我有同样的问题。我用类似这样的方法解决它:

我在 JavaScript

foreach 循环中准备数组
var itemIdVersionCollection = [];
var itemName = row[1];
var version  = row[2];
var key = { Key: itemId , Value: version };
itemIdVersionCollection.push(key);

我的模型是这样的:

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)