将tinymce与asp .net MVC 4.0集成

时间:2013-01-13 09:11:18

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

使用 ASP .NET MVC 4.0 VS2012

在我的一个页面中,我尝试集成一个WYSIWYG编辑器“ TinyMCE ”。为了集成,我遵循了以下网址:.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)"

也很好。但没有“WYSIWYG”窗格(我不知道它的名称,窗格用于编辑我在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`

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

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

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

6 个答案:

答案 0 :(得分:11)

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

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

@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接口。

答案 1 :(得分:3)

首先所有这两个相同的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>

第三次:on Views / Shared / EditorTemplates / tinymce_jquery_full.cshtml remove

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

请告诉我这是否对您有帮助。

雅罗

答案 2 :(得分:1)

组合网址和脚本路径时

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>

答案 3 :(得分:1)

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

最后我开始工作了。

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

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

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

    @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中工作得很好:) 希望我能提供帮助。

答案 4 :(得分:0)

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

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

请记住,这样做会始终使此模型为新的或编辑操作呈现富文本编辑器。所以你需要在这些视图上有适当的脚本引用。

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

答案 5 :(得分:-1)

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