【发布时间】:2014-01-27 21:59:26
【问题描述】:
我知道,有几个问题几乎相同。但我想不通,我的错误在哪里。
所以一开始我的情况: 我将使用 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>
}
错误是: 传入字典的模型项是 Hsetu.Help.Web.Areas.System.Models.HowTo.HowToModel 类型,但是这个字典需要 System.Web.Mvc.MvcHtmlString 类型的模型项
因此,如果我调试代码,它将逐步执行控制器和视图。我也会得到正确的模型和价值观!
只有来自 ajax 的成功函数的结果是带有此错误消息的 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之间的区别。找不到真正必要的理由! 谢谢
【问题讨论】:
-
将视图放入视图中是个坏主意。您需要更改控制器以返回部分视图。不过,您没有指定部分名称。你想通过这个电话返回什么?
-
我正在尝试获取视图的 html 内容。我也尝试返回 PartialView() Content() 和 MvcHtmlString 总是同样的错误!
-
ajax 调用旨在更新字段或检查信息。或更新部分。它们不是为整个视图替换而设计的。返回视图将包括您的布局页面、参考资料和许多您不需要重复的其他内容
-
如果您在这种情况下看到它,它类似于局部视图的更新!我不会用 html/body 标签渲染整个页面!它只是一个带有表单的 div。
标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4