尝试使用Ext.NET从ajax请求加载选项卡时出现异常

尝试使用Ext.NET从ajax请求加载选项卡时出现异常,ext.net,Ext.net,我正在将asp.net mvc与ext.net一起使用,并尝试创建一组选项卡,仅当用户选择这些选项卡时才加载信息 我可以使用ContentFromAction功能将局部视图加载到选项卡/面板中: 但我不知道如何仅在选择选项卡时填充选项卡/面板 我的项目基于Ext.NET MVC示例资源管理器2.5版代码库,此代码基于TabPanel>Basic>Ajax加载示例 我已经尽可能减少了示例,以重现问题: 在我看来,我创建了选项卡并配置了加载程序(与示例项目完全相同): Index.cshtml

我正在将asp.net mvc与ext.net一起使用,并尝试创建一组选项卡,仅当用户选择这些选项卡时才加载信息

我可以使用ContentFromAction功能将局部视图加载到选项卡/面板中:

但我不知道如何仅在选择选项卡时填充选项卡/面板

我的项目基于
Ext.NET MVC示例资源管理器2.5版
代码库,此代码基于
TabPanel>Basic>Ajax加载
示例

我已经尽可能减少了示例,以重现问题:

在我看来,我创建了选项卡并配置了加载程序(与示例项目完全相同):

Index.cshtml

    X.Panel()
        .ID("Tab3")
        .Title("Ajax Tab")
        .BodyPadding(6)
        .AutoScroll(true)
        .Loader(X.ComponentLoader()
            .Url(Url.Action("Ajax"))
            .LoadMask(m => m.ShowMask = true)
            .Params(new Parameter("containerId", "Tab3"))
            .Mode(LoadMode.Html)
        )
它正确地调用我的控制器(与示例项目完全相同):

Axax\u LoadController.cs

using System.Web.Mvc;    
namespace Ext.Net.MVC.Examples.Areas.TabPanel_Basic.Controllers
{
    public class Ajax_LoadController : Controller
    {
        public ActionResult Ajax(string containerId)
        {
            return View("Ajax");
        }
    }
}
单击该选项卡后,它会在选项卡中显示相应的视图:

Ajax.cshtml(这很有效)

它会在我选择的选项卡中正确呈现以下文本:

当选择选项卡时,我通过Ajax加载内容
Ext.create(“Ext.form.field.Text”,{renderTo:“App.id534c5fe0f159f3fb_Container”,value:“我是一个文本字段”})


我相信ext.net代码是@geoffrey.mcgill在堆栈溢出上编写的,所以我希望他能帮助我。

您需要使用PartialViewResult。请看这些例子

就我个人而言,我建议遵循部分项目示例。您始终可以将任何非Ext.NET内容包装到Ext.NET容器中。这种方法的好处是,如果重新加载内容,您无需担心会破坏Ext.NET组件。尽管如此,我还是建议在局部视图中为Ext.NET组件设置显式ID。至少,对于顶级组件

@using Ext.Net.MVC
<div>
    <p>I am content loaded via Ajax when the tab is selected</p>
</div>
@using Ext.Net.MVC
@{ var X = Html.X(); }
<div>
    <p>I am content loaded via Ajax when the tab is selected</p>
    @X.TextField().Text("I am a text field")
</div>
@using Ext.Net.MVC
@{ var X = Html.X(); }
<div>
    <p>I am content loaded via Ajax when the tab is selected</p>
    @X.TextField().Text("I am a text field").ToHtmlString()
</div>