Пытаюсь создать модуль для Orchard CMS. В этом конкретном модуле есть список (FAQS), и я хотел, чтобы EditorTemplate был динамически заполняемым. Нажмите кнопку, и будут добавлены 2 новых поля для следующего FAQ.
Это делается через 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 ().






Предполагая, что я правильно прочитал и $.get('FAQItem',... должен быть получен через AJAX, вам нужно будет дать ему полный URL-адрес, который включает конкретный контроллер, содержащий FAQItem. Этот URL-адрес будет создан с помощью вызова Razor, например
@Url.Action("FAQItem", "<Controller>", new { area = "<Module>" })