我正在使用带有ext.net的asp.net mvc而我正在尝试创建一组仅在用户选择信息时加载信息的选项卡。
我可以使用ContentFromAction函数将部分视图加载到选项卡/面板中:
但是,我无法弄清楚如何在选择标签时填充标签/面板。
我已根据Ext.NET MVC Examples Explorer version 2.5
代码库创建了我的项目,此代码位于TabPanel > Basic > Ajax Load
示例here
我尽可能地减少了这个例子来重现问题:
在我看来,我创建了选项卡并配置了加载程序(与示例项目完全相同):
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_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 (这可行)
@using Ext.Net.MVC
<div>
<p>I am content loaded via Ajax when the tab is selected</p>
</div>
如果我尝试在视图中添加控件,问题就会出现,如下所示:
Ajax.cshtml
@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>
此失败,例外情况:
ItemTag validation (_tkn_1): Reference token (init_script) was not found.
如果我修改文件Ext调用以返回Html,如下所示:
Ajax.cshtml
@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>
它在我选择的标签中正确呈现以下文字:
I am content loaded via Ajax when the tab is selected
<#:item ref="init_script" index="0">Ext.create("Ext.form.field.Text",{renderTo:"App.id534c5fe0f159f3fb_Container",value:"I am a text field"});</#:item><div id="App.id534c5fe0f159f3fb_Container"></div>
我相信ext.net代码是由@ geoffrey.mcgill编写的堆栈溢出代码所以我希望他能帮助我解救。
答案 0 :(得分:1)
您需要使用PartialViewResult。请看这些例子。
就个人而言,我建议遵循部分项目示例。您始终可以将任何nonExt.NET内容包装在Ext.NET容器中。这种方法的好处是,如果重新加载内容,则无需担心销毁Ext.NET组件。但是,无论如何,我建议在局部视图中为Ext.NET组件设置显式ID。至少,对于顶级组件。