我希望使用$ .ajax方法从视图到控制器接收json对象,但我不知道为什么控制器中的接收对象显示空数据。
这是我的代码。
$("#Save").click(function (e) {
$.ajax({ url: "Home/Save",
type: "POST",
datatype:'json',
data: ({movies:movies})
});
});
其中电影是包含
的javascript数组 ({
Name:"DDLJ",Stars:"SRK",Director:"Yashraj",Year:"2012"
}, {Name:"K3G",Stars:"SRK",Director:"Karan",Year:"2010"}
)
我的控制器代码是:
public string Save (List<MovieDB> movies)
{
return "";
}
其中MovieDB是我的模型类,它具有属性
public class MoviesDB
{
//public int MoviesID { get; set; }
public string Name { get; set; }
public string Stars { get; set; }
public string Director { get; set; }
public DateTime Year { get; set; }
}
请建议我从视图到控制器接收json数据的更好方法。
Actully我尝试将javascript数组对象从视图发送到控制器动作方法,其中我的数组代码是
<script type="text/javascript">
var cnt = 1;
var cnt2 = 1;
var i;
var movies = [];
movies.push({ Name: $("#txtMovieName").val(), Stars: $("#txtStarCasts").val(), Director: $("#txtDirector").val(), Year: $("#txtYear").val(), Index: cnt++ });
$("#modelTable").empty();
$("#modelTemplate").tmpl(movies).appendTo($("#modelTable"));
$("#txtMovieName").val("");
$("#txtStarCasts").val("");
$("#txtDirector").val("");
$("#txtYear").val("");
$("#txtMovieName").focus();
e.preventDefault();
});
$("#Save").click(function (e) {
//var jm = $.toJSON(movies);
$.ajax({ url: "Home/Save",
type: "POST",
data: ({movies:movies})
// contentType: 'application/json; charset=utf-8'
});
});
</script>
现在我想把那些电影javascript数组对象发送到Save()控制器的Action方法,使用像json或其他任何方式请建议我...
答案 0 :(得分:1)
这不是一个正确的json。您可以在JSONLint
上查看此信息这是正确的json:
[
{
"Name": "DDLJ",
"Stars": "SRK",
"Director": "Yashraj",
"Year": "2012"
},
{
"Name": "K3G",
"Stars": "SRK",
"Director": "Karan",
"Year": "2010"
}
]
如果仍有错误,请与我们联系。
答案 1 :(得分:0)
如果您希望在发布帖子后将数据导入控制器,这可能是一个更好的答案。
//For going to your view.
public ActionResult Create()
{
MoviesDB model = new MoviesDB();
return View("Create", model);
}
[HttpPost]
public ActionResult Create(MoviesDB model)
{
if (ModelState.IsValid)
{
//Here you can use your model param
//with the filled in values of your view.
return RedirectToAction("Index");
//when everything works fine, go to this view.
}
else
{
return RedirectToAction("Index");
//when there is a problem, go to this view.
}
return View("Index");
}
您不需要jQuery来使用您视图中的数据。
答案 2 :(得分:0)
List<xyztype> lstid = new JavaScriptSerializer().Deserialize<List<xyztype>>(IDlist);
正在为我工作
这里xyztype是我的集合类类型,IDlist是我从视图到控制器动作方法的json objectstring
使用javascriptserializer()。deserializer&lt;&gt;我们可以将json字符串转换为我们的自定义或系统数据类型对象
例如:
List<string> lstid = new JavaScriptSerializer().Deserialize<List<string>>(IDlist);