使用ASP.net MVC&JQuery将HTML标签(代码)作为字符串发布

我试图通过一个MVC模型发布一个表单到一个控制器中的保存功能。我也在客户端使用tinymce,这会产生一个基于HTML代码的字符串,例如< p>内容文字blah blah …< / p&gt ;. 问题是我不能发布包含< p>某事< / p>但令人惊讶的是, p>某事/ p>这个字符串(在“<”之后的空格)没有问题。但是,我不能在每次发布之前处理这个HTML代码并使这些空格。必须有一个更好的方法。 那么,如何通过$ .post方法发布包含HTML代码的字符串? (如果你必须知道,这个项目是一个内容管理系统,所以我必须将基于HTML的内容文本保存到一个sql表中。)我看到通过调试,后期操作甚至没有达到Controller,我认为这个是一个唯一的javascript问题,我是对的吗? 这是我正在使用的代码
使用Javascript
function JqueryFromPost(formId) {

  var form = $(formId);
  var action = form.attr("action");
  var serializedForm = form.serializeArray();

  $.post(action,serializedForm,function (data) {
      //Getting the data Result here...
  });
}

CS代码

   [HttpPost]
   public JsonResult SaveArticle(ArticleModel model)
   {
       JsonResult JResult = new JsonResult();

       if (ModelState.IsValid)
           //I do the saving here ending with "JResult.Data = "Success";" (this Could also be Failed. So,its just to explain)

       return JResult;
   }

解决方法

ASP.NET具有内置的请求验证功能,可自动帮助防止XSS和HTML注入攻击。如果要明确禁用此验证,您可以使用 [ValidateInput(false)]属性来装饰您要发布的操作:
[HttpPost]
[ValidateInput(false)]   
public ActionResult SaveArticle(ArticleModel model)
{
    var JResult = new JsonResult();
    if (ModelState.IsValid)
    {
        ...
    }
    return JResult;
}

此外,如果您在ASP.NET 4.0上运行此属性以生效,则需要将以下内容添加到您的web.config中:

<httpRuntime requestValidationMode="2.0" />

如果您使用的是ASP.NET MVC 3.0,则只能使用[AllowHtml]属性来装饰需要HTML的模型上的属性

public class ArticleModel 
{
    [AllowHtml]
    public string SomeProperty { get; set; }

    public string SomeOtherProperty { get; set; }
}

另外在你的javascript功能你可能想要serialize()而不是serializeArray()

function JqueryFromPost(formId) {
    var form = $(formId);
    $.post(form.action,form.serialize(),function (data) {
        //Getting the data Result here...
    });
}

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...