Javascript 通过Ajax Asp.NETMVC传递HTML代码
我尝试通过Ajax传递html代码,如下所示: 使用插件“summernote”(所见即所得编辑器) 举个例子:Javascript 通过Ajax Asp.NETMVC传递HTML代码,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我尝试通过Ajax传递html代码,如下所示: 使用插件“summernote”(所见即所得编辑器) 举个例子: <span style="font-weight: bold;">asdasdasd<span>sadasd 通过删除“ValidateInput和allowtml属性,您需要在属性中设置该属性,从而解决此问题 默认情况下,Asp.Net MVC不允许用户提交html以避免对应用程序的跨站点脚本攻击 验证输入属性 这是允许提交HTML的简单方法。此属性可以在
<span style="font-weight: bold;">asdasdasd<span>sadasd
通过删除“ValidateInput和allowtml属性,您需要在属性中设置该属性,从而解决此问题 默认情况下,Asp.Net MVC不允许用户提交html以避免对应用程序的跨站点脚本攻击 验证输入属性 这是允许提交HTML的简单方法。此属性可以在控制器级别或任何操作方法上启用或禁用输入验证。 在控制器级别验证输入
[ValidateInput(false)]
public class HomeController : Controller
{
public ActionResult AddArticle()
{
return View();
}
[HttpPost]
public ActionResult AddArticle(BlogModel blog)
{
if (ModelState.IsValid)
{
}
return View();
}
}
现在,用户可以成功提交此控制器的Html。
在操作方法级别验证输入
public class HomeController : Controller
{
public ActionResult AddArticle()
{
return View();
}
[ValidateInput(false)]
[HttpPost]
public ActionResult AddArticle(BlogModel blog)
{
if (ModelState.IsValid)
{
}
return View();
}
}
现在,用户可以成功提交此操作方法的Html
ValidateInput属性的限制
此属性也有问题,因为它允许对所有属性输入Html,这是不安全的。既然您只为一个和两个属性启用了Html输入,那么如何做到这一点呢。要允许对单个属性进行Html输入,应使用AllowHtml属性
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
public class BlogModel
{
[Required]
[Display(Name = "Title")]
public string Title { get; set; }
[AllowHtml]
[Required]
[Display(Name = "Description")]
public string Description{ get; set; }
}
allowtml属性
这是允许提交特定属性的HTML的最佳方式。此属性将添加到模型的属性中,以仅绕过该属性的输入验证。此显式声明比ValidateInput属性更安全
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
public class BlogModel
{
[Required]
[Display(Name = "Title")]
public string Title { get; set; }
[AllowHtml]
[Required]
[Display(Name = "Description")]
public string Description{ get; set; }
}
确保已从Conroller或Action方法中删除ValidateInput属性。现在,用户只能成功提交Description属性的Html。您需要找到来自服务器的500错误代码的根本原因。原因是“是的,我在您的问题中读到了”。这并没有改变这样一个事实,即您需要找到500错误代码的根本原因。找出服务器被
阻塞的原因,以及我如何找到原因?PS:编辑帖子你已经找到了一个解决方法,但它可能不是最优雅的。如果我是你,我会查看错误日志,看看异常是什么。如果您不知道如何查看错误日志,请删除所有内容并专注于此,因为您需要在应用程序中设置日志!是一个开始的好地方。^要在视图中显示html,请使用:@html.Raw(“”);这是你答案中唯一遗漏的东西,那就是我在寻找的。谢谢只需将[ValidateInput(false)]放入方法中即可。编辑:我没有使用模型。。。
[ValidateInput(false)]
public class HomeController : Controller
{
public ActionResult AddArticle()
{
return View();
}
[HttpPost]
public ActionResult AddArticle(BlogModel blog)
{
if (ModelState.IsValid)
{
}
return View();
}
}
public class HomeController : Controller
{
public ActionResult AddArticle()
{
return View();
}
[ValidateInput(false)]
[HttpPost]
public ActionResult AddArticle(BlogModel blog)
{
if (ModelState.IsValid)
{
}
return View();
}
}
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
public class BlogModel
{
[Required]
[Display(Name = "Title")]
public string Title { get; set; }
[AllowHtml]
[Required]
[Display(Name = "Description")]
public string Description{ get; set; }
}