我有一个需求,我需要传递一个div标记的所有HTML到控制器。我能够得到HTML,但代码失败时,我通过ajax传递HTML。
这是我的密码。
- 查看:**
function abc() {
var html = $("#div").html();
data = {
Html: html
};
$.ajax({
url: '@Url.Action("DisplayResult", "Default")', //
data: data,
type: "POST",
contentType: "application/json; charset=utf-8",
success: function(result) {
//do something
});
},
error: function(xhr) {
alert("error");
}
});
}
- 我的控制器操作方法:**
[HttpPost]
public FileResult DisplayResult(string Html)
{
return null;
}
我在网上搜索了一下,找到了几个相关的帖子,但那些都在谈论不同的解决方案,比如使用Html.Beginform()
和提交按钮-但这些解决方案都不适合我的需要。
6条答案
按热度按时间wlzqhblo1#
你有javascript错误,你的调用是错误的,你将需要字符串化的数据。
我在HomeController中有这样的功能:
qnyhuwrf2#
发送Html内容是不安全的,所以你会得到一个错误。虽然你可以绕过这个错误,禁用输入验证,但不建议:
xpszyzbs3#
也许内容类型是错误的,但是您可以从浏览器内部检查错误(使用网络选项卡并单击您的请求,或者甚至使用fiddler)
在不测试代码的情况下,我不能说太多,但另一个选项是检查
error
函数的responseText,如下所示:j13ufse24#
如果在contentType中定义了“application/json”,则必须在stringify操作后发送。
如果您没有定义“application/json”,默认的contentType是“application/x-www-form-urlencoded”,您可以不使用JSON. stringify将该对象传递给数据参数。
slwdgvem5#
感谢您的回复!
我通过添加一个带有[AllowHtml]属性的字符串属性并通过模型传递我的html来解决这个问题。
然而,由于一些用户回应说传递html是不安全的,所以我在我的控制器中编写了一个方法来生成相同的html。再次感谢您的回答!
cvxl0en26#