ASP.NET MVC 3 JSON ModelBinders لا يعمل
-
26-09-2019 - |
سؤال
أحاول استخدام New Json ModelBinders في MVC 3 الذي يتحدث عنه Scott Guthrie مدونته.
مثالي يشبه إلى حد كبير تلك التي يستخدمها. لدي نموذج له 3 قيم أحاول نشرها على الخادم.
يبدو النموذج هكذا:
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"}
أتوقع أن يتم ملء الخصائص الموجودة في النموذج على الخادم ، ولكن جميع الخصائص فارغة. أنا أستخدم 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);
}
});
لاحظ أنني أزلت structify و contentType
لا تنتمي إلى StackOverflow