【问题标题】:How can I add into a Razor View a panel created from code behind ext.NET (MVC)如何将使用 ext.NET (MVC) 后面的代码创建的面板添加到 Razor 视图中
【发布时间】:2013-08-29 12:09:38
【问题描述】:

我想在我项目的某个后端类中创建一个 ext.NET 面板。然后,在 razor 视图中,我想实例化这个类并使用它将组件放置到屏幕上。我需要后半部分的帮助!

例如,我有课:

namespace Interface.Resources
{

    public class Screen
    {

        public ext.Panel NavigationPanel()
        {
            ext.Panel navPanel = new ext.Panel
            {
                Title = "NAVIGATION",
                Border = true,
                Header = false,
                Region = ext.Region.East,
                Width = 400,
                Collapsible = true,
                CollapseMode = ext.CollapseMode.Mini,
                Split = true
            };

            return navPanel;

        }
....

现在,视图类看起来像这样......

@using Interface.Resources

@functions
{
    Interface.Resources.Screen _irs = new Interface.Resources.Screen();
}

@_irs.NavigationPanel()

....

显然后者不工作......它编译并运行,但我得到一个错误。我在做什么错...我尝试使用 Html.X() 等,但我似乎无法让面板呈现。

注意:如果我使用类似 Html.X().Panel()....Items(items => { items.add(_irs.NavigationPanel()); }) ... 它可以工作,但我不想每次使用我正在创建的接口资源库时都在剃刀视图中创建容器面板。

我明白这个问题不是 Razor 特有的。

【问题讨论】:

  • 你能创建一个asp.net mvc控件并以同样的方式将它传递给视图吗?我认为唯一的方法是在你的类中创建一个配置对象,而不是它自己的面板和视图而不是@_irs.NavigationPanel() 使用@(Html.X().Panel(_irs.NavigationPanelConfig))
  • 我发布了完整的答案。

标签: asp.net-mvc asp.net-mvc-4 extjs razor ext.net


【解决方案1】:

我认为您唯一的方法是在您的类中构建配置,然后调用 ext 扩展方法在视图中呈现面板。

定义

namespace Interface.Resources
{
    public class Screen
    {
        public static Ext.Net.Panel NavigationPanelConfig()
        {
            return new Ext.Net.Panel.Config()
            {
                Title = "NAVIGATION",
                Border = true,
                Header = false,
                Region = Ext.Net.Region.East,
                Width = 400,
                Collapsible = true,
                CollapseMode = Ext.Net.CollapseMode.Mini,
                Split = true,
            };
        }
    }
}

渲染

@(Html.X().Panel(Interface.Resources.Screen.NavigationPanelConfig()))

【讨论】:

  • 感谢您的反馈。我确实设法让这个工作......我会发布这个例子。
【解决方案2】:

我找到的解决方案是使用视口将面板放入其中。这一定与我正在实施的视图链有关。

@(
 Html.X().Viewport()
    .Layout(LayoutType.Border)
    .Items(items =>
        {
            items.Add(_menu.NavigationPanel(Model));
            items.Add(_tabPanel.MainScreen());
        })
)

【讨论】:

  • MEYWD,我在另一个用户帐户下问了另一个问题(不知道我是如何做到的)...请您看一下...这是关于使用手风琴布局的。 stackoverflow.com/questions/18556453/…
  • MEYWD,使用“配置”对象而不是主对象有什么区别?配置对象通常用于什么,它们的局限性是什么?
  • 今天晚些时候我会检查你的问题,至于配置,每个 Ext.NET 组件都可以由一个配置初始化,该配置只是一个具有初始属性的对象,现在配置对象具有相同的属性作为您要初始化的组件,但它实际上并不是一个组件,只是一个属性包,并且由于您无法在不调用 HTML.X().[ComponentName] 的情况下在视图中呈现 ext 组件,因此在后面的代码中创建组件没有任何价值,请创建配置该组件,然后将其传递给渲染扩展方法HTML.X().[ComponentName](Config)
  • 现在你的解决方案很好,但是如果你想添加一个没有视口的组件,那么你需要使用配置对象
  • 感谢您的帮助。我将尝试您描述的配置路线。我现在明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多