Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript t在Ajax调用填充时,页面的适当元素/部分中未呈现TinyMCE_Javascript_Ajax_Asp.net Mvc_Tinymce_Mvc Editor Templates - Fatal编程技术网

Javascript t在Ajax调用填充时,页面的适当元素/部分中未呈现TinyMCE

Javascript t在Ajax调用填充时,页面的适当元素/部分中未呈现TinyMCE,javascript,ajax,asp.net-mvc,tinymce,mvc-editor-templates,Javascript,Ajax,Asp.net Mvc,Tinymce,Mvc Editor Templates,我正在MVC项目中使用TinyMCE作为HTML编辑器。在页面加载时,一切似乎都很好(页面可以加载TinyMCE的多个实例),但是,如果我通过Ajax将另一个TinyMCE实例添加到DOM中,则TextArea将位于加载时添加到页面的最后一个TinyMCE的正下方 TinyMCE加载页面前后的工作: 应提供安置详情: 问题是“Blank”应该位于页面的另一个部分,而似乎是在最后一个TinyMCE之后“append” TinyMCE位于~/Shared/EditorTemplates/Edit

我正在MVC项目中使用TinyMCE作为HTML编辑器。在页面加载时,一切似乎都很好(页面可以加载TinyMCE的多个实例),但是,如果我通过Ajax将另一个TinyMCE实例添加到DOM中,则TextArea将位于加载时添加到页面的最后一个TinyMCE的正下方

TinyMCE加载页面前后的工作:

应提供安置详情:

问题是“Blank”应该位于页面的另一个部分,而似乎是在最后一个TinyMCE之后“append”

TinyMCE位于
~/Shared/EditorTemplates/EditHtml.cshtml
中:

@* TinyMCE 4.7.9 (2018-02-27) *@
<script src="@Url.Content("~/Scripts/tinymce/tinymce.js")" type="text/javascript"></script>

Selector: @ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty)<br />
Name: @ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)<br />

@Html.TextArea(string.Empty,
    (string)ViewData.TemplateInfo.FormattedModelValue
)

<script type="text/javascript">

    $(document).ready(function () {
        initTinyMCE(
            '#@ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty)',
            '@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)'
        );
    });

</script>
调用
foreach
横幅的父视图(滑块编辑):

@model x.Entities.Content.Sliders.Slider

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    @* Omitting other fields *@

    <div class="form-group">
        @Html.Label("Banners", htmlAttributes: new { @class = "control-label col-md-2" })

        <div id="Banners_@Model.Oid" class="sortable col-md-10">
            @foreach (var banner in Model.Banners.OrderByDescending(b => b.Order.HasValue).ThenBy(b => b.Order).ThenBy(b => b.Name))
            {
                @Html.Partial("~/Views/Banners/_Edit.cshtml", banner)
            }
        </div>

        @Html.ValidationMessageFor(model => model.Banners, "", new { @class = "text-danger" })

        <div class="form-group">
            <div class="col-md-12" style="float: right;">
                <br />
                @Ajax.ActionLink(
                    "Add Banner",
                    "Newbanner",
                    "Banners",
                    new { id = Model.Oid },
                    new AjaxOptions
                    {
                        HttpMethod = "GET",
                        InsertionMode = InsertionMode.InsertAfter,
                        UpdateTargetId = "Banners_" + @Model.Oid,
                    },
                    new { style = "btn btn-info" }
                )
            </div>
        </div>
    </div>

}
每个横幅(~/Views/Banners/_Edit.cshtml):


请告诉我是否应该添加任何其他信息。

“如果我通过Ajax向DOM添加另一个TinyMCE实例”。。。执行此操作的代码在哪里?您只共享了在document ready上初始化TinyMCE的代码,您认为这是有效的。Ajax调用正在检索“~/shared/EditorTemplates/EditHtml.cshtml”,但我将在一个小时左右发布所有代码。@z很好,我已经更新了OP,如果我仍然缺少一些关键的东西,请告诉我。也许这与在页面加载后动态添加tinymce编辑器有关。您是否尝试过类似的方法:
tinymce.EditorManager.execCommand('mceAddEditor',true,“here\u place\u editor\u class或ID”)在初始化另一个实例之后,它只是tinymce字段没有正确附加?_Edit partial中的其他字段附加得好吗?
@model x.Entities.Content.Sliders.Slider

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    @* Omitting other fields *@

    <div class="form-group">
        @Html.Label("Banners", htmlAttributes: new { @class = "control-label col-md-2" })

        <div id="Banners_@Model.Oid" class="sortable col-md-10">
            @foreach (var banner in Model.Banners.OrderByDescending(b => b.Order.HasValue).ThenBy(b => b.Order).ThenBy(b => b.Name))
            {
                @Html.Partial("~/Views/Banners/_Edit.cshtml", banner)
            }
        </div>

        @Html.ValidationMessageFor(model => model.Banners, "", new { @class = "text-danger" })

        <div class="form-group">
            <div class="col-md-12" style="float: right;">
                <br />
                @Ajax.ActionLink(
                    "Add Banner",
                    "Newbanner",
                    "Banners",
                    new { id = Model.Oid },
                    new AjaxOptions
                    {
                        HttpMethod = "GET",
                        InsertionMode = InsertionMode.InsertAfter,
                        UpdateTargetId = "Banners_" + @Model.Oid,
                    },
                    new { style = "btn btn-info" }
                )
            </div>
        </div>
    </div>

}
public PartialViewResult NewBanner(Guid id)
{
    Banner newBanner = new Banner() { SliderID = id, Name = "New Banner", Content = "Blank" };
    return PartialView("_Edit", newBanner);
}
@model x.Entities.Content.Sliders.Banner

@using (Html.BeginCollectionItem("Banners"))
{

    @* OMitting other fields *@

    <div class="form-group">
        @Html.LabelFor(model => model.Content, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Content, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Content, "", new { @class = "text-danger" })
        </div>
    </div>
}
public class Banner : BaseObject
{
    //Omitting ther fields

    [UIHint("EditHtml")]
    [Column(TypeName = "varchar(MAX)")]
    [DataType(DataType.MultilineText)]
    [AllowHtml]
    public string Content { get; set; }

}