Asp.net mvc 使用外部面板加载程序加载ASP-MVC视图

Asp.net mvc 使用外部面板加载程序加载ASP-MVC视图,asp.net-mvc,asynchronous,ext.net,Asp.net Mvc,Asynchronous,Ext.net,我有以下布局,与我在中描述的布局相关 顺便说一下,我使用的是aspx web应用程序视图我认为不应该将页面代码用于DirectEvents的处理程序。它脱离了MVC的概念。您应该参考控制器的操作 这里有一个例子 示例视图 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext"

我有以下布局,与我在中描述的布局相关


顺便说一下,我使用的是aspx web应用程序视图

我认为不应该将页面代码用于DirectEvents的处理程序。它脱离了MVC的概念。您应该参考控制器的操作

这里有一个例子

示例视图

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <title>Ext.Net.MVC v2 Example</title>
</head>
<body>
    <ext:ResourceManager runat="server" />

    <ext:Viewport runat="server" Layout="BorderLayout">
        <Items>
            <ext:Panel runat="server" Region="West" Width="100">
                <Items>
                    <ext:Button 
                        runat="server" 
                        Text="Load View 1" 
                        DirectClickUrl=<%# Url.Action("LoadView1") %>
                        AutoDataBind="true" />

                    <ext:Button 
                        runat="server" 
                        Text="Load View 2" 
                        DirectClickUrl=<%#Url.Action("LoadView2") %>
                        AutoDataBind="true" />
                </Items>
            </ext:Panel>

            <ext:Panel ID="MainPanel" runat="server" Region="Center">
                <Loader runat="server" Mode="Frame" AutoLoad="false">
                    <LoadMask ShowMask="true" />
                </Loader>
            </ext:Panel>
        </Items>
    </ext:Viewport>
</body>
</html>

Ext.Net.MVC v2示例
控制器示例

using System.Web.Mvc;
using Ext.Net;
using Ext.Net.MVC;

namespace Work2MVC.Controllers
{
    public class AspxController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult View1()
        {
            return View();
        }

        public ActionResult View2()
        {
            return View();
        }

        public ActionResult LoadView1()
        {
            Panel p = X.GetCmp<Panel>("MainPanel");
            p.LoadContent(Url.Action("View1"));

            return this.Direct();
        }

        public ActionResult LoadView2()
        {
            Panel p = X.GetCmp<Panel>("MainPanel");
            p.LoadContent(Url.Action("View2"));

            return this.Direct();
        }
    }
}
使用System.Web.Mvc;
使用Ext.Net;
使用Ext.Net.MVC;
命名空间Work2MVC.Controllers
{
公共类AspxController:控制器
{
公共行动结果索引()
{
返回视图();
}
公共行动结果视图1()
{
返回视图();
}
公共行动结果视图2()
{
返回视图();
}
公共操作结果加载视图1()
{
面板p=X.GetCmp(“主面板”);
p、 LoadContent(Url.Action(“View1”);
返回这个.Direct();
}
公共操作结果加载视图2()
{
面板p=X.GetCmp(“主面板”);
p、 加载内容(Url.Action(“View2”);
返回这个.Direct();
}
}
}

您还可以通过JavaScript在客户端发起加载请求。然后您就可以避免额外的请求。

我认为您不应该将页面代码用于DirectEvents的处理程序。它脱离了MVC的概念。您应该参考控制器的操作

这里有一个例子

示例视图

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <title>Ext.Net.MVC v2 Example</title>
</head>
<body>
    <ext:ResourceManager runat="server" />

    <ext:Viewport runat="server" Layout="BorderLayout">
        <Items>
            <ext:Panel runat="server" Region="West" Width="100">
                <Items>
                    <ext:Button 
                        runat="server" 
                        Text="Load View 1" 
                        DirectClickUrl=<%# Url.Action("LoadView1") %>
                        AutoDataBind="true" />

                    <ext:Button 
                        runat="server" 
                        Text="Load View 2" 
                        DirectClickUrl=<%#Url.Action("LoadView2") %>
                        AutoDataBind="true" />
                </Items>
            </ext:Panel>

            <ext:Panel ID="MainPanel" runat="server" Region="Center">
                <Loader runat="server" Mode="Frame" AutoLoad="false">
                    <LoadMask ShowMask="true" />
                </Loader>
            </ext:Panel>
        </Items>
    </ext:Viewport>
</body>
</html>

Ext.Net.MVC v2示例
控制器示例

using System.Web.Mvc;
using Ext.Net;
using Ext.Net.MVC;

namespace Work2MVC.Controllers
{
    public class AspxController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult View1()
        {
            return View();
        }

        public ActionResult View2()
        {
            return View();
        }

        public ActionResult LoadView1()
        {
            Panel p = X.GetCmp<Panel>("MainPanel");
            p.LoadContent(Url.Action("View1"));

            return this.Direct();
        }

        public ActionResult LoadView2()
        {
            Panel p = X.GetCmp<Panel>("MainPanel");
            p.LoadContent(Url.Action("View2"));

            return this.Direct();
        }
    }
}
使用System.Web.Mvc;
使用Ext.Net;
使用Ext.Net.MVC;
命名空间Work2MVC.Controllers
{
公共类AspxController:控制器
{
公共行动结果索引()
{
返回视图();
}
公共行动结果视图1()
{
返回视图();
}
公共行动结果视图2()
{
返回视图();
}
公共操作结果加载视图1()
{
面板p=X.GetCmp(“主面板”);
p、 LoadContent(Url.Action(“View1”);
返回这个.Direct();
}
公共操作结果加载视图2()
{
面板p=X.GetCmp(“主面板”);
p、 加载内容(Url.Action(“View2”);
返回这个.Direct();
}
}
}
您还可以通过JavaScript在客户端发起加载请求。然后你就避免了一个额外的请求