试图将对象强制转换为javascript[]{}-C#键值集合或字典<;字符串,对象>;或<;字符串,字符串>;
我想更好地理解将对象强制转换为名称与值集合的问题 说……如果我能那样做就好了 1)java脚本是否需要一些微调?打包数据 2)对我来说最重要的是:从键值试图将对象强制转换为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()
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#更……文明……我称之为智慧。。。组织得很好,无论在哪里都很强大