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 值绑定到模型的主要内容,如果未能解决你的问题,请参考以下文章

MVC 5 Razor 视图未将 bool 绑定到输入

将数据绑定到 ListBox 并将列表发布到数据库 mvc5

MVC - 将动态添加的控件绑定到模型中的 List<T>

如何将javascript绑定到MVC5视图中创建的表中的checkboxes和datetimepicker

MVC 5下拉列表用于编辑视图中的多选值绑定

Angular + Material Autocomplete:如何将某些值仅绑定到 md-option 中的模型