Asp.net MVC 文本编辑器将长 html 代码传递给控制器
Asp.net MVC Text Editor pass long html code to controller
我想为网站制作一个文本编辑器,以允许用户编写自己的文本或来自其他来源的过去文本来创建页面(例如 wordpress)。
为此,我选择 Jquery-Te 作为文本编辑器。
我的问题是,当我 copy/paste 来自维基百科的文本时,我遇到了 404.15 错误。我读过我可以对 RequestLimit 做一些更改,但我不知道用户文本可以有多长。我可以将限制设置为 400000,但如果用户输入 500000,他将收到错误消息。是否有其他方法允许用户传递大量文本?
我的第二个问题是 Jquery-Te 生成 html 而我的文本实际上是一个 html 代码。有时我无法得到像 "A potentially dangerous Request.Form value was detected from the client".
这样的错误
有人可以帮我做我想做的事吗?
我给你我的代码:
视图:
<form action="SaveArticle" method="post">
@Html.TextBoxFor(x => x.Article.Titre)
@Html.TextBoxFor(x => x.Article.Contenu, new { @class = "editor" })
<button type="submit" class="btn btn-info btn-circle">
<i class="fa fa-search"></i>
</button>
</form>
<script>
$(".editor").jqte();
</script>
控制器:
public ActionResult GestionDesPages(GestionDesPagesViewModel gdpvm)
{
return View(gdpvm);
}
[HttpPost]
public ActionResult SaveArticle(GestionDesPagesViewModel gdpvm)
{
Articles article = gdpvm.Article;
article.Date = DateTime.Now;
article.Auteur = "Pascal";
db.Articles.Add(article);
db.SaveChanges();
return View("GestionDesPages");
}
视图模型:
public class GestionDesPagesViewModel
{
public Articles Article{get; set;}
}
型号:
public partial class Articles
{
public int Id { get; set; }
public string Titre { get; set; }
public string Contenu { get; set; }
public string Auteur { get; set; }
public Nullable<System.DateTime> Date { get; set; }
public Nullable<bool> Actif { get; set; }
}
抱歉英语不好。
谢谢。
编辑:
谢谢你纳瓦。
Nava 给出的解决方案帮助我解决了所有问题。
我没说我用 EntityFramework。要添加 [AllowHttp],我使用了在此 Add annotation to Entity Framework Generated class
中定义的过程
要允许在您的表单中输入 HTML 而不会收到 "potentially dangerous" 消息,请将 [AllowHtml]
属性添加到 Contenu
[AllowHtml]
public string Contenu { get; set; }
请记住,当您显示该字段时,您可能需要 Html 编码以防止跨站点脚本问题
我想为网站制作一个文本编辑器,以允许用户编写自己的文本或来自其他来源的过去文本来创建页面(例如 wordpress)。 为此,我选择 Jquery-Te 作为文本编辑器。
我的问题是,当我 copy/paste 来自维基百科的文本时,我遇到了 404.15 错误。我读过我可以对 RequestLimit 做一些更改,但我不知道用户文本可以有多长。我可以将限制设置为 400000,但如果用户输入 500000,他将收到错误消息。是否有其他方法允许用户传递大量文本?
我的第二个问题是 Jquery-Te 生成 html 而我的文本实际上是一个 html 代码。有时我无法得到像 "A potentially dangerous Request.Form value was detected from the client".
这样的错误有人可以帮我做我想做的事吗?
我给你我的代码:
视图:
<form action="SaveArticle" method="post">
@Html.TextBoxFor(x => x.Article.Titre)
@Html.TextBoxFor(x => x.Article.Contenu, new { @class = "editor" })
<button type="submit" class="btn btn-info btn-circle">
<i class="fa fa-search"></i>
</button>
</form>
<script>
$(".editor").jqte();
</script>
控制器:
public ActionResult GestionDesPages(GestionDesPagesViewModel gdpvm)
{
return View(gdpvm);
}
[HttpPost]
public ActionResult SaveArticle(GestionDesPagesViewModel gdpvm)
{
Articles article = gdpvm.Article;
article.Date = DateTime.Now;
article.Auteur = "Pascal";
db.Articles.Add(article);
db.SaveChanges();
return View("GestionDesPages");
}
视图模型:
public class GestionDesPagesViewModel
{
public Articles Article{get; set;}
}
型号:
public partial class Articles
{
public int Id { get; set; }
public string Titre { get; set; }
public string Contenu { get; set; }
public string Auteur { get; set; }
public Nullable<System.DateTime> Date { get; set; }
public Nullable<bool> Actif { get; set; }
}
抱歉英语不好。 谢谢。
编辑:
谢谢你纳瓦。 Nava 给出的解决方案帮助我解决了所有问题。 我没说我用 EntityFramework。要添加 [AllowHttp],我使用了在此 Add annotation to Entity Framework Generated class
中定义的过程要允许在您的表单中输入 HTML 而不会收到 "potentially dangerous" 消息,请将 [AllowHtml]
属性添加到 Contenu
[AllowHtml]
public string Contenu { get; set; }
请记住,当您显示该字段时,您可能需要 Html 编码以防止跨站点脚本问题