Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图将对象强制转换为javascript[]{}-C#键值集合或字典<;字符串,对象>;或<;字符串,字符串>;_C#_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

试图将对象强制转换为javascript[]{}-C#键值集合或字典<;字符串,对象>;或<;字符串,字符串>;

试图将对象强制转换为javascript[]{}-C#键值集合或字典<;字符串,对象>;或<;字符串,字符串>;,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我想更好地理解将对象强制转换为名称与值集合的问题 说……如果我能那样做就好了 1)java脚本是否需要一些微调?打包数据 2)对我来说最重要的是:从键值Js到字典C#的正确转换方法是什么 Aspx/Html部分 (随机选择一个) 随机顶滩 随机顶中心 随机本地酒吧 JavaScript/jQuery部分 函数AddNew(){ 如果(!确认(“您想添加此联系人吗?”)返回; var Name=$('#tbx_Name').val(); var City=$('tbx_City').val()

我想更好地理解将对象强制转换为名称与值集合的问题

说……如果我能那样做就好了

1)java脚本是否需要一些微调?打包数据

2)对我来说最重要的是:从键值
Js
字典C#
的正确转换方法是什么

Aspx/Html
部分


(随机选择一个)
随机顶滩
随机顶中心
随机本地酒吧
JavaScript/jQuery
部分

函数AddNew(){
如果(!确认(“您想添加此联系人吗?”)返回;
var Name=$('#tbx_Name').val();
var City=$('tbx_City').val();
var Country=$('tbx_Country').val();
var selectedRC=$('#ChosenRandomClass选项:selected').val();
var hDate=[]
var param1={key:“Name”,value:Name};
var param2={key:“City”,值:City};
var param3={键:“国家”,值:国家};
var param4={key:“SelctedClass”,值:selectedRC};
hDate.push(参数1);
hDate.push(参数2);
hDate.push(参数3);
hDate.push(参数4);
//这部分是必要的吗?数据将无法访问
//在没有序列化的情况下正确地隐藏代码?
var startPrt=Sys.Serialization.JavaScriptSerializer.serialize(hDate);
ajaxUpdate(“addNew”,startPrt);
}
C#后面的代码部分

public void AddNewRecord(object startPrt)
{
Dictionary SenthDate=新字典();
//……等等
}
请给我正确的答案


感谢您的帮助和时间。

传统的方法是构造一个普通的javascript对象,jQuery.ajax(…)无需任何预处理即可使用该对象

var hDate = {
    "Name": $('#tbx_Name').val(),
    "City": $('#tbx_City').val(),
    "Country": $('#tbx_Country').val(),
    "SelctedClass": $('#ChosenRandomClass').val()
};
ajaxUpdate("addNew", hDate);
ajaxUpdate()
中,ajax表达式如下所示:

function ajaxUpdate(action, data) {
    ...
    $.ajax({
        url: '...',
        data: data,
        ...
        success: function(){
            ...
        }
    });
}

因此,序列化数据将提供给任何风格的服务器端脚本。

我尝试了您的示例,并注意到startPrt参数实际上是作为字典(字符串,对象)数组来接收的。因此,如果您这样进行AJAX调用:

var hDate = [];
hDate.push({ key: "Name", value: Name });
hDate.push({ key: "City", value: City });
hDate.push({ key: "Country", value: Country });
hDate.push({ key: "SelctedClass", value: selectedRC });

$.ajax({
    contentType: 'application/json; charset=utf-8',
    url: 'MyPage.aspx/AddNewRecord',
    type: 'POST',
    data: JSON.stringify({ startPrt: hDate }),
    success: success, // success callback
    error: error // error callback
});
您可以定义WebMethod,如下所示,将startPrt参数转换为字典:

[WebMethod]
public static void AddNewRecord(object startPrt)
{
    var dict = new Dictionary<string, object>();
    foreach (Dictionary<string, object> pair in (Array)startPrt)
        dict.Add((string)pair["key"], pair["value"]);
}
[WebMethod]
公共静态void AddNewRecord(对象startPrt)
{
var dict=新字典();
foreach(数组中的字典对startPrt)
dict.Add((字符串)对[“键”],对[“值”]);
}

非常感谢,但是,如果你可以说,重要的是我需要它在字典中,我只是想了解第二部分,即如何将这些密钥对加载到dict中。我假设这是服务器端用某种我不懂的语言发生的事。谢谢你的帮助,我认为在你的经验水平上,掌握一些C#编码对你来说应该是很有趣的。虽然我的朋友不喜欢Ms。。他们是用php的方式完成的……是的,这些天我所有的服务器端脚本都是用php编写的。在过去,JSP、ASP(pre.net)、SSI和一些Perl。我年纪太大了,现在不能开始学习新东西。可能是10年前。你在C方法中接收的发送日期对象是什么类型的?它不是一本字典(字符串、对象)了吗?@ThomasC.G.deVilhena我甚至没有检查过它(:@ThomasC.G.deVilhena我被困在
AddNewRecord()中)
,SentDate的人口你能不能发一点示例代码,这样我就可以在字典上学习正确的语法?你简直是个天使!带上我的代码并尝试找到解决方法!非常感谢你,如果你有另一个版本作为我的想法的升级,我会用你的经验对它进行测试还有更多的游戏…我会很高兴在这里看到它,希望其他人会觉得它很方便,thx a million mate!我很高兴我能帮上忙;)。顺便说一句,我认为如果尝试一些AJAX调用参数的变化,您可能会得到更好的结果,因为它正在作为数组和字典的组合进行序列化。在我了解了它的一些伟大之处后,比如发布数据而不进行完全刷新(远不止这些)…当我专注于C#时,我想。。但我真的很喜欢c#它更容易理解,尽管我不能失去jQuery+UI、javascript和ajax的关键功能,因为我需要自己开发一个完整的产品。。我不能只是“选择”一方的兴趣或偏好,我需要交付。。我认为你这样想是很自然的……至少知道怎么做。而C#更……文明……我称之为智慧。。。组织得很好,无论在哪里都很强大