[英]input validation not working on asp.net mvc 4 model sent as JSON
[英]ASP.NET MVC 3 JSON ModelBinders not working
我正在嘗試在MVC 3中使用新的JSON ModelBinders,Scott Guthrie在他的博客中談到了這一點。
我的例子與他正在使用的例子非常相似。 我有一個模型有3個值,我試圖POST到服務器。
該模型如下所示:
public class CommentViewModel
{
public string Product { get; set; }
public string Text { get; set; }
public string Author { get; set; }
}
JavaScript看起來像這樣:
$("#addComment").click(function () {
var comment = {
Product: $("#productName").html(),
Text: $("#comment").val(),
Author: $("#author").val()
};
alert("value=" + JSON.stringify(comment));
$.ajax({
url: "/Home/Add",
type: "POST",
data: JSON.stringify(comment),
datatype: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data);
}
});
});
控制器操作如下所示:
[HttpPost]
public ActionResult Add(CommentViewModel comment)
{
// ...
}
我得到的警報(JavaScript帖子中的那個)給了我這樣的東西:
value={"Product":"Classic","Text":"the comment","Author":"me"}
我期望模型中的屬性填充在服務器上,但所有屬性都為null。 我正在使用ASP.NET MVC 3 Preview 1。
我想這可能是因為ASP.NET MVC 3 Preview 1沒有按預期自動注冊JsonValueProviderFactory
。
將以下片段放在Global.asax中以手動注冊它,它應該解決您的問題:
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())
很確定你需要改變以下幾行
$.ajax({
url: "/Home/Add",
type: "POST",
data: comment,
datatype: "json",
success: function (data) {
alert(data);
}
});
注意我已經刪除了stringify和contenttype
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.