我在这里看到一些有关类似问题的问题,我已经阅读了,跟着他们,但是我仍然有同样的问题.
我基本上是在javascript中创建一个对象,并尝试调用一个控制器上返回一个html字符串的方法.不是JSON.
我一直在使用dataType和contentType,但仍然没有喜悦.所以如果代码片段有点混乱,那么道歉.
在JS中构建对象.
function GetCardModel() { var card = {}; card.CardTitle = $("#CardTitle").val(); card.TopicTitle = $("#TopicTitle").val(); card.TopicBody = $("#TopicBody").data("tEditor").value(); card.CardClose = $("#CardClose").val(); card.CardFromName = $("#CardFromName").val(); return card; }
看看对象 – 所有的东西看起来都很好,就像在JSON中一样.
var model = GetCardModel(); alert(JSON.stringify(GetCardModel()));
打电话…
$.ajax({ type: "POST",url: "/Postcard/Create/Preview/",dataType: "json",//contentType: "application/json",data: GetCardModel(),processData: true,success: function (data) { alert("im back"); alert(data); },error: function (xhr,ajaxOptions,error) { alert(xhr.status); alert("Error: " + xhr.responseText); //alert(error); } });
总是当我进入控制器时,对象总是在那里,但是对于所有的属性都是空值.
解决方法
参数名称应为数据,而不是日期:
$.ajax({ type: 'POST',url: '/Postcard/Create/Preview/',dataType: 'json',data: { CardTitle: $("#CardTitle").val(),TopicTitle: $("#TopicTitle").val(),TopicBody: $("#TopicBody").data("tEditor").value(),CardClose: $("#CardClose").val(),CardFromName: $("#CardFromName").val() },success: function (data) { alert('im back'); alert(data); },error) { alert(xhr.status); alert('Error: ' + xhr.responseText); } });
这将成功调用以下控制器动作,动作参数将被正确绑定:
[HttpPost] public ActionResult Preview(Card card) { ... }
具有以下模型:
public class Card { public string CardTitle { get; set; } public string TopicTitle { get; set; } public string TopicBody { get; set; } public string CardClose { get; set; } public string CardFromName { get; set; } }