Ajax加载Mvc内容错误

时间:2014-01-27 21:59:26

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4

我知道,有几个问题几乎同一个问题。但我无法弄清楚,我的错误在哪里。

首先我的情况: 我将使用ajax加载我的内容并将其推送到网站。

$.ajax({
url: _this.url,
contentType: "application/html; charset=utf-8",
type: "GET",
dataType: "html",
data: {
    stamp: Date.now()
},
success: function (result) {
    _this.app = $("<div id='" + _this.frameId + "' />")
        .addClass("place-top-left page")
        .css({
            "height": "100%",
            "z-index": 4000
        })
        .append($(result))
        .appendTo(document.body);
    if (loadedCallback) {
        loadedCallback();
    }
},
error: function (xhr, status) {
    alert(xhr.responseText);
}
});

我的控制器:

public ActionResult Edit(int id)
{
var howToContent = Manager.Get(id);

var howToModel = new HowToModel()
{
    MediaID = howToContent.Media.ID,
    HowToTitle = howToContent.Title,
    Name = howToContent.Name,
    BusinessIds = howToContent.BusinessIDs.Select(it => it.ToString()).ToArray()
};

return View(howToModel);
}

我的观点:

@model Hsetu.Help.Web.Areas.System.Models.HowTo.HowToModel           
@{
   ViewBag.Title = "Leitfaden bearbeiten";
   Layout = "~/Areas/System/Views/Shared/AppSite.cshtml";
}

@section ScriptCSS{
  @Scripts.Render("~/uploadScripts")
}

@using (Html.BeginForm())
{
   <fieldset>
       <label>
          @Html.EditorFor(m => m.Name)
       </label>
       <label>
          @Html.EditorFor(m => m.HowToTitle)
       </label>
       <label>
          @Html.EditorFor(m => m.BusinessIds)
       </label>
   </fieldset>
}

Error ill get是: 传递到字典中的模型项的类型为Hsetu.Help.Web.Areas.System.Models.HowTo.HowToModel,但此字典需要System.Web.Mvc.MvcHtmlString类型的模型项 < / p>

因此,如果我调试代码,它将逐步通过Controller和View。我也会得到正确的模特和价值观!

只有来自ajax的success函数的结果是带有此错误消息的json返回。

这适用于相同的代码但未将此howToModel传递到视图中。


另一方面,我发现,如果生病使用这样的ajaxcall它也会起作用吗?!对不起..但WTF是这个ajaxcalls ?????

之间的差异
$.ajax({
    url: _this.url,
    contentType: 'application/html; charset=utf-8',
    type: 'GET',
    dataType: 'html',
    data: {                        
        stamp: Date.now()
    }
})
.success(function (result) {
    _this.app = $("<div id='" + _this.frameId + "' />")
    .addClass("place-top-left page")
    .css({
        "height": "100%",
        "z-index": 4000
    })
    .append($(result))
    .appendTo(document.body);
if (loadedCallback) {
    loadedCallback();
}
})
.error(function (xhr, status) {
    alert(xhr.responseText);
});

所以我的问题是,我怎样才能让第一个ajaxcall工作?我需要这个语法..所以没有办法解决。也许有人可以解释我ajax之间的区别。没有找到真正必要的理由! 感谢

1 个答案:

答案 0 :(得分:0)

ajax调用之间的区别是.error()调用 on 返回的.ajax()调用对象返回deferred object,它是可链接的,允许多个要设置的处理程序,而在error:函数中传递只能在每次ajax()调用时执行一次 - 我相信这是一种较旧的语法。

(BTW .error()已被弃用,您应该使用.fail()代替 - 如果您使用的是此方法)

关于你的MVC(服务器端)错误:这通常是我尝试将一个null属性值传入强类型帮助器时得到的错误消息。检查.Name.HowToTitle.BusinessIds的值是否为空。