#asp.net-mvc #kendo-ui #telerik
#asp.net-mvc #kendo-пользовательский интерфейс #telerik
Вопрос:
У меня есть это окно кендо в моем приложении
Html.Kendo().Window()
.Name("copyStructure")
.Title("Copy Structure")
.Content("Loading...")
.LoadContentFrom("CopyStructure", "NewXmlLayout") // <-- here*
.Draggable(false)
.Visible(false)
.Modal(true)
.Actions(s => s.Custom(""))
.Events(e => e.Open("openWindow").Close("closeWindow"))
И я пытаюсь передать данные в действие в LoadContentFrom(), которое возвращается функцией JavaScript, но я не знаю, как это сделать. Я могу передавать данные следующим образом:
.LoadContentFrom("CopyStructure", "NewXmlLayout", new { type= "INPUT" })
Но это не то, что я ищу.
Функция JS:
function getInfo() {
return { type: "INPUT" };
};
Мой контроллер:
public ActionResult CopyStructure(string type)
{
return PartialView();
}
Комментарии:
1. Что происходит при замене
"NewXmlLayout"
наgetInfo()
? Что вы подразумеваете под «не то, что я ищу»?2.
"NewXmlLayout"
это мой контроллер иCopyStructure
мое действие.
Ответ №1:
Если вам действительно нужно получить доступ к своим данным с помощью функции JavaScript getInfo()
, то способ сделать это — определить окно, как вы делаете, но не устанавливайте содержимое, пока не откроете окно. При открытии окна используйте jQuery.ajax()
to call CopyResult
, передавая результаты getInfo()
в параметр data .
В вашем Razor извлеките LoadContentFrom
добавить обработчик события для Open
события:
@(Html.Kendo().Window()
.Name("copyStructure")
// Omitted for brevity
...
.Events(e => e.Open("copyStructure_Open"))
)
И в вашем обработчике в JavaScript вызовите $.ajax
и в success
обратном вызове content
вызовите метод для объекта Window, передав возвращаемый data
в качестве параметра:
function copyStructure_Open(e) {
$.ajax({
url: '@Url.Action("CopyStructure", "NewXmlLayout")',
type: 'POST',
data: getInfo(),
success: function(data) {
e.sender.content(data);
}
});
}
Остерегайтесь отправлять только то, что требуется для содержимого окна, а не полную страницу (DOCTYPE, html, head, body) — см. Эту документацию от Telerik: http://docs .telerik.com/kendo-ui/getting-started/web/window/overview#loading-window-content-via-ajax
Комментарии:
1. спасибо, я рвал на себе волосы с помощью loadcontentfrom с частичным представлением mvc, пока я забыл установить layout равным null