【问题标题】:MVC kendo window - Get Data from JavaScript functionMVC kendo 窗口 - 从 JavaScript 函数获取数据
【发布时间】:2014-08-09 06:34:58
【问题描述】:

我的应用中有这个剑道窗口

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"))

我正在尝试将数据传递给由 JavaScript 函数返回的 LoadContentFrom() 中的操作,但我不知道该怎么做。我可以像这样传递数据:

.LoadContentFrom("CopyStructure", "NewXmlLayout", new { type= "INPUT" })

但这不是我要找的。​​p>

JS函数:

function getInfo() {
        return { type: "INPUT" };
    };

我的控制器:

 public ActionResult CopyStructure(string type)
    {
        return PartialView();
    }

【问题讨论】:

  • "NewXmlLayout" 替换为getInfo() 会发生什么? “不是我要找的东西”是什么意思?
  • "NewXmlLayout" 是我的控制器,CopyStructure 是我的操作。

标签: asp.net-mvc kendo-ui telerik


【解决方案1】:

如果您确实需要通过 JavaScript getInfo() 函数访问您的数据,那么执行此操作的方法是按照您的方式定义窗口,但在打开窗口之前不要设置内容。打开窗口时,使用jQuery.ajax()调用CopyResult,将getInfo()的结果传递给data参数。

在你的 Razor 中,取出 LoadContentFromOpen 事件添加一个事件处理程序:

@(Html.Kendo().Window()
    .Name("copyStructure")
    // Omitted for brevity
    ...
    .Events(e => e.Open("copyStructure_Open"))
)

在您的 JavaScript 处理程序中,调用 $.ajax 并在 success 回调中,调用 Window 对象的 content 方法,并将返回的 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

【讨论】:

  • 谢谢,当我忘记将布局设置为 null 时,我正在使用 mvc 局部视图的 loadcontentfrom 拉扯我的头发
猜你喜欢
  • 2013-06-08
  • 1970-01-01
  • 2014-05-07
  • 2018-08-09
  • 1970-01-01
  • 2022-11-03
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多