【问题标题】:MVC5 how to bind TinyMCE value to modelMVC5 如何将 TinyMCE 值绑定到模型
【发布时间】: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 视图页面。

标签: javascript c# jquery asp.net-mvc tinymce


【解决方案1】:

如果您想强制 TinyMCE 填充隐藏字段,您可以在提交前使用此功能:

tinyMCE.triggerSave();

【讨论】:

  • 我试试看,这是否意味着我每次需要从编辑器获取值时都必须调用 triggerSave?是否可以在回发时自动调用 triggerSave?我做了一些快速检查,似乎 triggersave 是 tinyMCE 3.x API,我目前正在使用 tinyMCE 4.x
  • 实际上,如果我没记错的话,如果没有一些棘手的事情,tinyMCE 应该由 delault 在提交时填充它。是的,这意味着你应该每次都这样做......我认为它应该适用于 tinyMCE 4.0,因为它适用于 answerdemo
  • 如您所见,您可以使用change 事件来填充值。
  • 我刚刚用虚拟模型和视图制作了一个虚拟解决方案,它可以工作。 TinyMCE 能够在回发时返回值。但它仍然无法在我的主要解决方案中工作,这可能是因为我将 TinyMCE 放在 EditorFor 中吗?
  • 我不能确切地告诉你它为什么会发生。在我的项目中,我不得不使用tinyMCE.triggerSave();
【解决方案2】:

所以,我通过移动脚本来修复它

$(document).ready(function () {
        tinymce.init({selector: 'textarea'});
    })

从 EditorTemplates 到我的布局。

我不知道为什么我把它放在EditorTemplates里面不起作用,因为我的Layout在@RenderBody之后没有任何东西,也许有人可以启发我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多