TinyMCE应该如何在ASP.NET MVC页面上工作?

Ric*_*d77 4 asp.net-mvc tinymce

在之前的一个问题中,有人向我指出TinyMCE是一个不错的免费WYSIWYG编辑器.从那时起,最简单的部分就是下载资源,并在ASP.NET MVC示例页面上显示一个编辑器.然而,我还没有能够使它工作(即使在网上冲浪 - 即使在TinyMCE的网站上,我没有看到第一次用户的任何东西).

好吧,也许最重要的是要知道这个东西应该如何工作.例如,我在TextArea所在的同一个Html.BeginForm中放置了一个按钮.但是当我点击它时,没有发生回发事件.所以,这是我的问题:

编辑背后的概念是什么?

  1. 如何发布内容?(使用按钮,链接???)
  2. 如何收到我的操作方法中发布的值?(使用本地字符串变量 - (模型绑定?))
  3. 我应该期待什么?(文本,HTML片段,两者???)

如果有人可以为我提供资源,那就太好了.但是,就目前而言,我想知道这是如何运作的.

谢谢你的帮助.

Sun*_*oot 5

TinyMCE采用标准<textarea>元素并使用JavaScript将其转换为富文本编辑器.因此,在ASP.NET MVC视图中,您只需以正常方式创建textarea,例如

<% Html.TextAreaFor(m => m.Description) %>
Run Code Online (Sandbox Code Playgroud)

当TinyMCE将其转换为textarea时,它仍将在textarea元素上保持相同的id和name属性:

<textarea id="Description" name="Description"></textarea>
Run Code Online (Sandbox Code Playgroud)

所以模型绑定应该继续正常工作,它是上面代码示例中的name属性,当你发布时提交,TinyMCE不会改变它,所以你的POST数据看起来像:( Description=<p>Hello world</p>&MyButton=Submit表单POST数据只是名字/由&sersands分隔的价值对).

所以在你的Controller Action中:

[HttpPost]
public ActionResult SaveProduct(Product product)
{
    string description = product.Description;

    // Save Product to database (snip)
}
Run Code Online (Sandbox Code Playgroud)

'description'变量将包含TinyMCE的原始HTML标记.所以这一切都应该正常工作,不知道为什么不是.您可以验证表单是否已设置并正常发布,例如.通过删除TinyMCE并只有一个标准的textarea.

另外,你有没有<asp:TinyMCE机会使用WebForms控件?

  • @Sunday Ironfoot:这一次,我在[AcceptVerb(Http.Post)]之上添加了[ValidateInput(false)],并且(我不知道为什么)它有效.感谢有关XSS攻击的建议,但就目前而言,我正在品尝成功. (2认同)