在Orchard CMS的EditorTemplate中渲染PartialView

时间:2018-11-29 16:44:40

标签: html asp.net-mvc orchardcms

我正在尝试为Orchard CMS创建一个模块。 这个特定的模块有一个列表(FAQS),我希望EditorTemplate是可动态填充的。 单击一个按钮,并为下一个FAQ添加了2个新字段。

这是通过PartialView完成的,该PartialView被列表中的每个问题调用。如果列表中有问题,则可以动态加载。但是,一旦我要添加新问题,它就会停止工作,并告诉我找不到要呈现的页面。

编辑器模板的代码:

<fieldset>
    <div style="border: 1px solid black">
        <div>
            @Html.LabelFor(m => m.Title, T("Title"))
            @Html.TextBoxFor(m => m.Title, new { @class = "text medium" })
        </div>
        <ul id="FAQs" style="list-style-type: none">
            @if (Model.FAQList == null || Model.FAQList.Count == 0) {
            } else {
                <li>FAQS</li>
                foreach (FAQ faq in Model.FAQList) {
                    Html.RenderPartial("FAQItem", faq);
                }
            }
        </ul>
        <a id="addAnother" href="#" onclick="test();">Add Question</a>
</fieldset>

还有test()函数

function test() {
            $.get('FAQItem', function (data) {
                $("#FAQs").append(data);
            });
        }

EditorTemplate在Views / EditorTemplates / FAQ下,而FAQItem在Views / FAQItem下。

就我所知,测试功能正在尝试从另一个地方请求PartialView,而Html.RenderPartial()会这样做。

1 个答案:

答案 0 :(得分:0)

假设我正在阅读此权利,并且$.get('FAQItem',...可以通过AJAX进行检索,则需要为其提供一个完全合格的URL,其中包括包含FAQItem的特定控制器。将使用

之类的Razor调用来创建此URL。
@Url.Action("FAQItem", "<Controller>", new { area = "<Module>" })