MVC5 如何将 TinyMCE 值绑定到模型
Posted
技术标签:
【中文标题】MVC5 如何将 TinyMCE 值绑定到模型【英文标题】:MVC5 how to bind TinyMCE value to model 【发布时间】:2014-12-09 07:04:23 【问题描述】:我尝试将 TinyMCE 绑定到我的模型中,但它在回发时总是返回 null。我的代码:
查看:
@html.TextAreaFor(Function(m) m.LangValue)
<script>
$(document).ready(function ()
tinymce.init(selector: 'textarea');
)
</script>
型号:
<Required(ErrorMessage:="Required")> _
<Display(Name:="LangValue")> _
<StringLength(8000, ErrorMessage:="Maximum 8000 characters")> _
<AllowHtml()> _
Public Property LangValue As String
Get
Return _langValue
End Get
Set(value As String)
_langValue = value
End Set
End Property
如果我删除 tinymce 脚本工作正常,所以我检查了 HTML,似乎 TinyMCE 用 display: none 隐藏了 textarea 并用他们自己的 UI 替换它。是否可以在回发时将 textarea 值替换为 TinyMCE 编辑器值?
任何帮助将不胜感激。抱歉英语不好。
【问题讨论】:
我理解你在对话框中创建 TinyMCE 是否正确?我的意思是你创建 DOM。 不,我不是,只是一个普通的带有剃刀语法的 html 视图页面。 【参考方案1】:如果您想强制 TinyMCE 填充隐藏字段,您可以在提交前使用此功能:
tinyMCE.triggerSave();
【讨论】:
我试试看,这是否意味着我每次需要从编辑器获取值时都必须调用 triggerSave?是否可以在回发时自动调用 triggerSave?我做了一些快速检查,似乎 triggersave 是 tinyMCE 3.x API,我目前正在使用 tinyMCE 4.x 实际上,如果我没记错的话,如果没有一些棘手的事情,tinyMCE 应该由 delault 在提交时填充它。是的,这意味着你应该每次都这样做......我认为它应该适用于 tinyMCE 4.0,因为它适用于 answer 和 demo。 如您所见,您可以使用change
事件来填充值。
我刚刚用虚拟模型和视图制作了一个虚拟解决方案,它可以工作。 TinyMCE 能够在回发时返回值。但它仍然无法在我的主要解决方案中工作,这可能是因为我将 TinyMCE 放在 EditorFor 中吗?
我不能确切地告诉你它为什么会发生。在我的项目中,我不得不使用tinyMCE.triggerSave();
【参考方案2】:
所以,我通过移动脚本来修复它
$(document).ready(function ()
tinymce.init(selector: 'textarea');
)
从 EditorTemplates 到我的布局。
我不知道为什么我把它放在EditorTemplates里面不起作用,因为我的Layout在@RenderBody之后没有任何东西,也许有人可以启发我。
【讨论】:
以上是关于MVC5 如何将 TinyMCE 值绑定到模型的主要内容,如果未能解决你的问题,请参考以下文章
将数据绑定到 ListBox 并将列表发布到数据库 mvc5