【发布时间】:2017-12-14 12:17:16
【问题描述】:
嘿,我需要一些帮助,试图弄清楚如何在我的 asp.net mvc 页面中将返回的 JSON.stringify 字符串循环到 POST。
我的javascript:
var result = JSON.stringify(data);
$.ajax({
type: 'POST',
url: 'saveUpdate',
cache: false,
dataType: 'json',
data: {
bomdata: result
},
success: function (response) {
console.log('has been updated');
},
error: function (response) {
console.log(response);
}
});
还有我的 ASP.net MVC 控制器代码:
[HttpPost]
public string saveUpdate(string bomdata)
{
dynamic dynJson = JsonConvert.DeserializeObject(bomdata);
//Needing to add the loop here and place all data into my class
//and continue until its at the end of the loop
resultsBack.Add("dback", "GOOD");
resultsBack.Add("dhead", "Added BOM # " + bomdata.number);
resultsBack.Add("dinfo", "BOM was updated successfully");
resultsBack.Add("guid", bomdata.theGuid);
return JsonConvert.SerializeObject(resultsBack, Formatting.Indented);
}
以及正在发布的 json 字符串:
[{
"description": "1f43f",
"environment": 2,
"manufacturer": 3,
"vendor": 5,
"hardwarePartNumber": "v3rg",
"hardwareModelNumber": "35hg33",
"softwarePartNumber": "3f",
"softwareVersion": "2f",
"guid": ""
}, {
"description": "674h",
"environment": 5,
"manufacturer": 1,
"vendor": 33,
"hardwarePartNumber": "54eth",
"hardwareModelNumber": "5yh55",
"softwarePartNumber": "32hnj4",
"softwareVersion": "4.9",
"guid": ""
}]
我的班级:
public class bValues
{
public string description { get; set; }
public int environment { get; set; }
public int manufacturer { get; set; }
public int vendor { get; set; }
public string hardwarePartNumber { get; set; }
etc...etc....
}
我真正需要的是能够遍历该 json 并将数据放入我的类中,将其保存到我的数据库中,然后根据其中的数据量使用另一个循环再次执行此操作。
所以,从上面的例子中,我有 2 组 json 值返回 [{ set1 },{ set2 }]
我想将 每个 集合放入我的班级:
Dictionary<string, string> _tmpParms = new Dictionary<string, string>();
StringBuilder buildTblVal = new StringBuilder();
StringBuilder buildTblName = new StringBuilder();
//Start loop....
HELPer.bomLineValues bomdata = JsonConvert.DeserializeObject<HELPer.bomLineValues>(bomdata);
//Now loop through that set and format it like
//blah1: something1, blah2: something2, blah3: something3, etc..
foreach (var prop in bomdata.GetType().GetProperties())
{
if (prop.PropertyType.Name == "Int32")
{
buildTblVal.Append(prop.Name + ": " + prop.GetValue(bomdata) + ",");
}
else
{
buildTblVal.Append(prop.Name + ": " + "'" + prop.GetValue(bomdata) + "',");
}
}
//Remove trailing comma
buildTblVal.Length = buildTblVal.Length - 1;
buildTblName.Length = buildTblName.Length - 1;
//Now save to the DB
_tmpParms.Add("1", buildTblName.ToString());
_tmpParms.Add("2", buildTblVal.ToString());
SQLHelper.callSQLSP("spUpdateBom", _tmpParms, "", false);
//Now loop back and get the next set of data to do the same with
任何帮助都会很棒!
【问题讨论】:
-
当你有一个代表数据的 POCO 类时,你为什么要使用
dynamic? -
我认为你可以做到这一点
var data = JsonConvert.DeserializeObject<IEnumerable<bValues>>(bomdata); -
@mmushtaq 当我这样做时,我得到 Error CS1056 Unexpected character ''
标签: c# asp.net asp.net-mvc json.net stringify