在ASP.Net MVC 4中,我需要使用ajax方法将json数据发布到控制器中,并将json转换回模型。我可以从我的模型中获取json,但我无法将其转换回来。 我的控制器出了异常。在这里,我创建了一个模型对象,由另一个ajax方法调用为json类型。并使用另一种ajax方法发布此数据。
这是我的代码:
public class LiveController : Controller
{
//
// GET: /Live/
public JsonResult myproduct()
{
Product Book = new Product {pId=1,pName="Novel" };
return Json(Book,JsonRequestBehavior.AllowGet);
}
public ActionResult viewproduct()
{
return View();
}
[HttpPost]
public String loadproduct(String Book1)
{
Product values = JsonConvert.DeserializeObject<Product>(Book1);
return "ready";
}
}
public class Product
{
public string pName { get; set; }
public int pId { get; set; }
}
$(document).ready(function () {
var Book;
$('#searchbtn').click(function () {
$.ajax({
url: "/Live/myproduct",
type: "GET",
cache: false,
dataType: "json",
contentType: "application/json",
data: {},
success: function (result) {
Book = result;
$.each(result, function (key, val) {
$('.prolist').append("<li>" + val + "</li>");
});
}
});
});
$('#postbtn').click(function () {
var Book1 = JSON.stringify(Book);
$.ajax({
url: "/Live/loadproduct",
type: "POST",
cache: false,
async: true,
dataType: "json",
contentType: "application/json",
data:Book1 ,
success: function (result) {
alert("success");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
}
});
});
});
请提供解决方案。
答案 0 :(得分:0)
这样做:
var Jsonobject = JsonConvert.DeserializeObject<Product>("jsonstring");// pass your string json here
Product result = Jsonobject.Product;
答案 1 :(得分:0)
以下是适用于我的代码
public class LiveController:Controller { // // GET:/ Live /
public JsonResult myproduct()
{
Product Book = new Product {pId=1,pName="Novel" };
return Json(Book,JsonRequestBehavior.AllowGet);
}
public ActionResult viewproduct()
{
return View();
}
[HttpPost]
public JsonResult loadproduct()
{
var request = ControllerContext.HttpContext.Request;
request.InputStream.Seek(0, SeekOrigin.Begin);
var json= new StreamReader(request.InputStream).ReadToEnd(); ;
Product result = JsonConvert.DeserializeObject<Product>(json);// pass your string json here
return Json(result,JsonRequestBehavior.AllowGet);
//var Jsonobject = JsonConvert.DeserializeObject<Product>("jsonstring");
//Product result = Jsonobject;
//return "ready";
}
}
}
$(document).ready(function(){
var Book;
$('#searchbtn').click(function () {
$.ajax({
url: "/Live/myproduct",
type: "GET",
cache: false,
dataType: "json",
contentType: "application/json",
data: {},
success: function (result) {
Book = result;
$.each(result, function (key, val) {
$('.prolist').append("<li>" + val + "</li>");
});
}
});
});
$('#postbtn').click(function () {
var jsonstring = JSON.stringify(Book);
$.ajax({
url: "/Live/loadproduct",
type: "POST",
cache: false,
async: true,
dataType: "text",
contentType: "application/json",
data: jsonstring,
success: function (result) {
console.log(result);
alert(result)
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
}
});
});
});