【问题标题】:integrating tinymce with asp .net MVC 4.0将 tinymce 与 asp .net MVC 4.0 集成
【发布时间】:2017-09-09 01:04:03
【问题描述】:

使用 ASP .NET MVC 4.0、VS2012。

在我的一个页面中,我尝试集成一个所见即所得的编辑器“TinyMCE”。为了集成,我遵循以下 URL:.tugberkugurlu.com

我的查看页面是这样的:

@model AboutModels
@using FileUploadDemo.Models
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="Scripts/tinymce/jquery.tinymce.js" type="text/javascript"></script>

@{
    ViewBag.Title = "About";
}

@using (Html.BeginForm()) {

@Html.ValidationSummary(true)

<fieldset>
    <legend>About</legend>

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

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

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

    <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>

    <p>
        Posted Content : @ViewBag.HtmlContent
    </p>

</fieldset>
}

我的模型是这样的:

public class AboutModels 
{
    public string Title { get; set; }
    public DateTime PostedOn { get; set; }
    public string Tags { get; set; }

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

}

我的关于页面加载所有功能。

"@html.EditorFor(model=>model.content)"

加载也很好。但没有加载“所见即所得”窗格(我不知道它叫什么,该窗格用于编辑我在 textarea 中写入的文本(HTml.editorFor()))。在运行时,jquery.tinymce.js 文件中会抛出异常。

错误信息:

`Unhandled exception at line 86, column 11 in http://localhost:1706/Home/About

0x800a01b6 - Microsoft JScript runtime error: Object doesn't support this property or method`

给我两个选项,Continue 或 Break。如果我继续,页面会加载我前面提到的功能。如果我中断,那么它会保留在带有黄色文本背景的 jquery.tinymce.js 文件中。

我没有使用 Javascript/jquery 的经验。 ASP .NET MVC 4.0 中的新功能,实际上这是我在 .net 中第一次尝试 Web 应用程序。

我从 nuGet 更新了 jquery。有什么可能的方法来解决它?

【问题讨论】:

    标签: javascript jquery asp.net-mvc-4 tinymce


    【解决方案1】:

    此页面需要更新。 Tinymce 现在很容易融入到几乎任何东西中,MVC4 也不例外。

    您将 Tinymce 提供的地址和一行脚本放入 _layout 文档的头部,以表明您希望它更改文本框:

    @Scripts.Render("//tinymce.cachefly.net/4.0/tinymce.min.js")
    <script>
        tinymce.init({ selector: 'textarea' });
    </script>
    

    你所要做的就是确保你在表单上呈现一个文本框,它会显示 Tinymce。

    [AllowHtml]
    [DataType(DataType.MultilineText)]
    public string YourInputText { get; set; }
    

    但是,如果 tinymce.cachefly.net 上的站点关闭,那么这确实意味着没有人能够使用 tinymce 界面。

    【讨论】:

    • 谢谢它对我有用,但我需要有更多选项的编辑器我该如何更改它?
    【解决方案2】:

    第一个是两个相同的 jquery 文件(但最小 - 缩小版):

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    

    第二个:只需到_Layout底部添加:

            @Scripts.Render("~/bundles/jquery")
            @RenderSection("scripts", required: false)
            <script src="@Url.Content("~/Scripts/tinymce/jquery.tinymce.js")" type="text/javascript"></script>
    

    第三个:在 Views/Shared/EditorTemplates/tinymce_jquery_full.cshtml 上删除

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

    如果这对你有帮助,请告诉我。

    雅罗斯拉夫

    【讨论】:

    • 在 mvc4 上你也可以删除 @Url.Content 并使用
    • 感谢您的回复。错误消息现在不显示。伟大的。但是 tinymce 没有显示应该在哪里。
    • 尝试将 jquery.tinimce.js 从 _Layout 移动到 tinymce_jquery_full.cshtml 的顶部。还添加到 jquery 的链接,应该工作:
    【解决方案3】:

    结合 url 和脚本路径时

    http://localhost:1706/Home/About
    <script src="Scripts/tinymce/jquery.tinymce.js" type="text/javascript"></script>
    

    这表明 jquery.tinymce.js 应该位于 /Home/About/Scripts/tinymce/jquery.tinymce.js 中。我认为这是不正确的。尝试将脚本路径更改为

    <script src="/Scripts/tinymce/jquery.tinymce.js" type="text/javascript"></script>
    //or
    <script src="~/Scripts/tinymce/jquery.tinymce.js" type="text/javascript"></script>
    

    【讨论】:

      【解决方案4】:

      在 MVC3 中一切正常。但在 MVC4 中却没有。 (至少对我来说..)

      终于搞定了。

      在 _Layout.cshtml 中我不得不移动底线:

          @Scripts.Render("~/bundles/jquery")
          @RenderSection("scripts", required: false)
      

      到顶部(在 head 标签内),行前:

          @Styles.Render("~/Content/css")
          @Scripts.Render("~/bundles/modernizr")
      

      然后离开:

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

      在 EditorTemplate tinymce_jquery_full.cshtml 文件中。

      现在它像在 MVC3 中一样工作正常 :) 希望我能帮上忙。

      【讨论】:

        【解决方案5】:

        您可以在模型本身上添加数据注释以告诉它使用 tinymce。这是完整富文本编辑器的示例。

        [Display(Name = "Condition"), UIHint("tinymce_jquery_full"), AllowHtml]
        public string ExampleCondition { get; set; }
        

        请记住,这样做总是会使此模型呈现富文本编辑器以进行新操作或编辑操作。所以你需要在这些视图上有正确的脚本引用。

        您还需要在模型中使用正确的 using 语句才能使用 System.ComponentModel.DataAnnotations。

        【讨论】:

          【解决方案6】:

          你必须使用“@html.Raw(model=>model.content)”

          【讨论】:

          • 您能否详细说明一下这个答案?
          猜你喜欢
          • 2011-05-02
          • 1970-01-01
          • 2017-07-20
          • 1970-01-01
          • 1970-01-01
          • 2011-09-15
          • 1970-01-01
          • 1970-01-01
          • 2019-07-25
          相关资源
          最近更新 更多