我正在创建一个MVC应用程序,我需要公开一个需要2个参数的Action。第一个参数将是字符串类型,第二个参数将是一个对象。基于第一个参数值,我将解析该对象。我正在尝试做这样的事情
客户端
function SaveLookup() {
debugger;
var userData = {};
userData.lookupType = "Users";
userData.objLookup = { "UserID": 1, "UserCode": "XYZ", "FirstName": "FName", "LastName": "LNAme", "IsActive": "1", "UserRole": "2" };
$.ajax({
url: '/home/SaveLookup',
dataType: 'json',
type: 'POST',
contentType: 'application/json;charset=utf-8',
data: JSON.stringify(userData),
success: function (result) {
debugger;
$("#partialviews").html(result);
},
error: function (xhr) {
debugger;
alert(xhr);
}
});
}
服务器端
[HttpPost]
public JsonResult SaveLookup(string lookupType, object objLookup)
{
if (lookupType == "Users")
User uObject = JsonConvert.DeserializeObject<User>(objLookup);
else if (lookupType == "xyz")
return Json("");
}
我能够读取第一个参数值,但无法解析该对象。我试过反思但没有运气。
答案 0 :(得分:1)
试试这个并看看。
var itemsSerialized = JsonConvert.SerializeObject(objLookup);
User uObject = (User)JsonConvert.DeserializeObject<User>(itemsSerialized);
答案 1 :(得分:0)
@Mohd Ansari,在您的客户端脚本中似乎有问题。
将客户端用作
function SaveLookup() {
debugger;
var userData = {};
userData.lookupType = "Users";
userData.objLookup = JSON.stringify({ "UserID": 1, "UserCode": "XYZ", "FirstName": "FName", "LastName": "LNAme", "IsActive": "1", "UserRole": "2" });
// console.log(JSON.stringify(userData));
$.ajax({
url: '/home/SaveLookup',
dataType: 'json',
type: 'POST',
contentType: 'application/json;charset=utf-8',
data: JSON.stringify(userData),
success: function (result) {
debugger;
},
error: function (xhr) {
debugger;
alert(xhr);
}
});
}
,您的控制器代码应为
[HttpPost]
public JsonResult SaveLookup(string lookupType, string objLookup)
{
User uObject = new User();
if (lookupType == "Users")
uObject =JsonConvert.DeserializeObject<User>(objLookup);
return Json("");
}
让我知道逻辑对你有用吗?
答案 2 :(得分:0)
尝试(使用动态)public JsonResult SaveLookup(string lookupType, dynamic objLookup)