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