MVC: при использовании Kendo().Window для загрузки PartialView, появляется ошибка "Ресурс не найден"
Я использую модал Kendo().Window()
загрузить Partial View
по нажатию кнопки.
У меня есть основной вид, скажем, View1, содержащий кнопку, код для отображения окна, где Partial View
содержащий Kendo().Grid
будет загружен, и javascript
функция, которая открывает окно:
Вот что у меня на View1:
Это кнопка:
@(Html.Kendo().Button()
.Name("btnSubmit")
.HtmlAttributes(new { type = "button"})
.Icon("k-icon k-i-file-txt")
.Content("View Details")
.Events(e => e.Click("DisplayDetailedView"))
)
Это окно для отображения содержимого PartialView
:
@(Html.Kendo().Window()
.Name("ReportData")
.Title("Details Report")
.LoadContentFrom("RedirectToView", "MyController")
.Modal(true)
.Visible(false)
.Width(800)
.Height(375)
.Position(p => p.Top(100).Left(800))
)
И это javascript
Функция для открытия окна:
function DisplayDetailedView() {
var w = $("#ReportData").data("kendoWindow");
w.open();
}
мой Partial View
имеет Kendo().Grid, который вызывает метод из контроллера для заполнения данными:
@(Html.Kendo().Grid(Model.Report)
.......
.DataSource(ds => ds
.Ajax()
.Read(read => read.Action("GetReport","MyController", Model))
)
Когда я загружаю View1, вызывается метод, который должен вызываться при инициализации Grid, и я получаю сообщение об ошибке "
"Этот ресурс не может быть найден.
HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), возможно, был удален, изменилось его имя или временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.
Запрашиваемый URL:/MyController/GetReport"
Похоже, страница пытается сделать мой Kendo().Window
, звонки RedirectToView
в контроллере от .LoadContentFrom
событие окна для перенаправления на мой Partial View
с сеткой
Функциональность используется для работы с модальным подходом начальной загрузки, когда я не использовал Kendo().Window
внутри View1, но использовал Ajax
нажмите на кнопку, которая называется RedirectToView
метод:
function ShowReversalsDetailedView() {
$.ajax(
{
url: "/MyController/RedirectToView/",
type: 'post',
dataType: "html",
contentType: 'application/json; charset=utf-8',
success: function (result) {
$(".modal-content").html(result);
}
})
}
Тем не менее, мне нужно изменить его на Kendo().Window()
Как я могу это исправить?
1 ответ
Во-первых, RedirectToView должен возвращать частичное представление, а не перенаправлять его.
Если это так, попробуйте загрузить свой контент, когда откроете окно. Итак, сначала удалите .LoadContentFrom("RedirectToView", "MyController")
из окна декларации.
Тогда в вашей функции JavaScript:
function DisplayDetailedView() {
var w = $("#ReportData").data("kendoWindow");
w.refresh({
url: '@Url.Action("RedirectToView", "MyController")'
});
w.open();
}
Я бы также изменил ваш ajax-вызов на использование @Url.Action. Я смущен, хотя, почему вы будете вызывать RedirectToView здесь? Это POST или он возвращает частичное или это перенаправление? Перенаправление было бы плохо - вам нужно сделать это на стороне клиента.
function ShowReversalsDetailedView() {
$.ajax(
{
url: '@Url.Action("RedirectToView", "MyController")',
type: 'post',
dataType: "html",
contentType: 'application/json; charset=utf-8',
success: function (result) {
$(".modal-content").html(result);
}
})
}
См. https://docs.telerik.com/kendo-ui/api/javascript/ui/window/methods/refresh