1

总是得到这个错误:

获取:0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法 'tinymce'

通过 Nuget:PM> 安装包 TinyMCE.MVC.JQuery 最新版本

型号类:

using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;

namespace Familytree.Models {

  public class TinyMCEModelJQuery {

      [AllowHtml]
      [UIHint("tinymce_jquery_full")]
      public string Content { get; set; }
  }
}

控制器:

using System.Web.Mvc;
namespace Familytree.Controllers {

public class TinyMCESampleJQueryController : Controller {
    //
    // GET: /TinyMCESampleJQuery/
    [ValidateInput(false)]
    public ActionResult Index() {

        return View();

    }
  }
}

看法:

 @model Familytree.Models.TinyMCEModelJQuery

 <h2>Index</h2>

 @using (Html.BeginForm())
 {
    <fieldset>
    <legend>TinyMCEModel</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.Content)
    </div>
    <div class="editor-field">

        @Html.EditorFor(model => model.Content)
        @Html.ValidationMessageFor(model => model.Content)
    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
    </fieldset>
 }

共享文件夹和编辑器模板下的 tinymce_jquery_full

@*
Don't forget to reference the JQuery Library here, inside your view or layout.
<script src="@Url.Content("~/Scripts/jquery-x.x.x.min.js")" type="text/javascript"></script>
*@

<script src="@Url.Content("~/Scripts/tinymce/jquery.tinymce.js")" type="text/javascript"></script>

<script type="text/javascript">

    (function(){ 

      $(function() { 

          $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({

            // Location of TinyMCE script
            script_url: '@Url.Content("~/Scripts/tinymce/tiny_mce.js")',
            theme: "advanced",

            height: "500",
            width: "790",
            verify_html : false,
            plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave",

            // Theme options
            theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
            theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
            theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft,codehighlighting,netadvimage",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_statusbar_location : "bottom",
            theme_advanced_resizing : false,

            // Example content CSS (should be your site CSS)
            content_css : "@Url.Content("~/Scripts/tinymce/css/content.css")",
            convert_urls : false,

            // Drop lists for link/image/media/template dialogs
            template_external_list_url : "lists/template_list.js",
            external_link_list_url : "lists/link_list.js",
            external_image_list_url : "lists/image_list.js",
            media_external_list_url : "lists/media_list.js"

        });

      });

    })();

</script>

@Html.TextArea(string.Empty, /* Name suffix */
    ViewData.TemplateInfo.FormattedModelValue /* Initial value */
)

Do I change this last line to
@Html.EditorFor(string.Empty, /* Name suffix */
    ViewData.TemplateInfo.FormattedModelValue /* Initial value */
)
Using EditorFor in the Index view
4

2 回答 2

0

你的局部视图应该是这样的

<script src="@Url.Content("~/Scripts/tinymce/tiny_mce.js")" type="text/javascript"></script>

<script type="text/javascript">
    (function () {
        tinyMCE.init({
            mode: "exact",
            elements: "@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)",
            theme: "simple",
            height: "300",
            width: "400",
            verify_html: false,
            theme_simple_resizing: true,
            content_css: "@Url.Content("~/Content/Site.css")",
            convert_urls: false
        })
    })();
</script>

@Html.TextArea(string.Empty, /* Name suffix */
    ViewData.TemplateInfo.FormattedModelValue /* Initial value */
)

或将主题更改为高级,无论如何,当我这样做时,我使用了这个https://www.nuget.org/packages/TinyMCE,它工作正常。您需要做的就是[UIHint("tinymce_jquery_full")]在模型中的字符串定义之前添加。我认为不需要控制器TinyMCESampleJQueryController

希望这可以帮助

于 2013-11-22T17:29:37.110 回答
0

你可以试试这个,没有别的

在视图模型中

 @Html.TextAreaFor(c => c.ColumnName, new { @class = "tinyEditor", @autocomplete = "off" })

在脚本中

<script type="text/javascript">
tinymce.init({
    selector: ".tinyEditor",
    theme: "modern",
    menubar: false,
    width: 400,
    height: 100,
    plugins: [
         "advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker",
         "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking",
         "save table contextmenu directionality emoticons template paste textcolor"
    ],
    content_css: "/Areas/Admin/Content/lang/en/assets/css/style.css",
    toolbar: "styleselect | bold italic |  bullist numlist outdent indent",
    style_formats: [
         { title: 'Bold text', inline: 'b' },
         { title: 'Red text', inline: 'span', styles: { color: '#ff0000' } },
         { title: 'Red header', block: 'h1', styles: { color: '#ff0000' } },
         { title: 'Example 1', inline: 'span', classes: 'example1' },
         { title: 'Example 2', inline: 'span', classes: 'example2' },
         { title: 'Table styles' },
         { title: 'Table row 1', selector: 'tr', classes: 'tablerow1' }
    ]
});

JS

https://cdnjs.cloudflare.com/ajax/libs/tinymce/5.0.6/jquery.tinymce.min.js

它正在工作,不要编写任何其他代码,只需在模型和 tinymce 脚本中使用类名

于 2019-06-03T06:37:03.373 回答