gpt4 book ai didi

javascript - MVC5 Controller 未接收ajax发布的html内容

转载 作者:行者123 更新时间:2023-12-02 22:18:52 24 4
gpt4 key购买 nike

检查下面的 JQuery 和 MVC5 Controller 代码。问题是,当我从 ajax Controller Request.Form["des"] 发布任何 HTML 内容时,不会抓取 HTML 内容,但是,如果我发布普通文本,那么它会很好地接收。现在的问题是,HTML 内容有什么问题?我还禁用了 Controller 上的输入安全性,正如您在 Controller 代码中看到的那样,但它仍然无法获取 HTML。请注意,我的目标是获取从 ajax 发布的字符串形式的 HTML 内容。提前致谢

Jquery:

//var des = "test"; //this one receiving in controller successfully
var des = "<b>test</b>"; //this one not receiving in controller
var form_data = new FormData();
form_data.append('des', des);
$.ajax({
url: '/item/dosomething',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function (response) {
console.log(response);
},
error: function (response) {
console.log(response);
}
});

MVC5 Controller :

[ValidateInput(false)]
[HttpPost]
public ActionResult DoSomething()
{
string des = Request.Form["des"];
return Json("ok");
}

最佳答案

对 HTML 特定内容使用 [AllowHtml]

如果您想将 HTML 传递到服务器,您应该考虑使用 [AllowHtml]属性来装饰属性(并避免通过 [ValidateInput(false)] 属性禁用输入验证):

public class HtmlContent 
{
[AllowHtml]
public string des { get; set; }
}

然后使用该类作为您期望在 Controller 操作中收到的内容:

[HttpPost]
public ActionResult DoSomething(HtmlContent content)
{
// Access your element here
var html = content.des;

return JsonResult("ok");
}

考虑只发布一个字符串

此外,由于您没有做任何过于复杂的事情,您可能会考虑简化现有的 AJAX 调用以利用简写 $.post()如下所示:

var des = '<b>test</b>';
$.post('/item/dosomething', { des: des }, function(response) { console.log(response); });

...除非您需要表格

如果您绝对需要发布表单(例如使用 FormData),您可能需要相应地调整您的调用。值得注意的是,您仍然可以绑定(bind)到上面定义的同一类(并根据需要添加其他属性):

var form_data = new FormData();
form_data.append('des', des)

$.ajax({
url: '/item/dosomething',
data: form_data,
processData: false,
contentType: false,
type: 'POST',
success: function(response){
console.log(response);
}
});

关于javascript - MVC5 Controller 未接收ajax发布的html内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59298527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com