如何在VS2012 MVC4项目中设置Ext.NET 2.0?

Val*_*rio 4 asp.net-mvc project razor ext.net visual-studio-2012

我怀疑我的问题会得到解答,但我会在这里尝试,因为我的挫折程度如此之高,以至于它可能会帮助我自己降低它们!

所以,我想做的是:

  • 从头开始安装VS2012(okey,单击.exe然后继续!)
  • 创建一个新的MVC4项目
  • 使用Razor View Engine(现在是默认设置)
  • 让EXT.NET 2.0与上面一起工作

这将是Ext.NET 2.1的一个特性,因为所有要求都将在nuGet包中打包,唯一的问题是我,因为其他少数开发人员想要使用那些已经可以正常工作的东西

我现在成功做了什么:

  • 在这个线程之后我正确设置了web.config!
  • 使VS2012识别Ext.Net参考

这是如何做:

  • 创建新项目,选择基本/空/ Internet应用程序模板
  • 在项目的资源中,添加对Ext.NET.dll的引用(浏览,查找等)
  • 以这种方式编辑web.config:

http://diffchecker.com/v99ScX0x

  • 以这种方式编辑Views/web.config:

http://diffchecker.com/7UEK058Y

我希望diffchecker很清楚,让你明白,无论如何,两个文件中的变化都是相同的,它们必须如此!

  • 在App_Start/RouteConfig.cs中添加以下行

routes.IgnoreRoute( "{排除}/{extnet} /ext.axd");

  • 现在我继续关注上面链接的主题
  • 创建受控命名的"Examples" - > ExamplesController.cs,此处不需要修改
  • 创建上述控制器的视图.所以Views/Examples/Index.cshtml

在那里我编辑了一下页面,使其更加MVC风格,真的没什么大不了的.整页如下:

@{
    ViewBag.Title = "Infinite Scrolling - Ext.NET Examples";
}

@Html.X().ResourceManager()

<h1>Infinite Scrolling</h1>
<p>The brand new GridPanel supports infinite scrolling, which enables you to load any number of records into a grid without paging.</p>
<p>The GridPanel uses a new virtualized scrolling system to handle potentially infinite data sets without any impact on client side performance.</p>
<br />

@(Html.X().GridPanel()
    .Title("Stock Price")
    .Height(500)
    .Width(500)
    .InvalidateScrollerOnRefresh(false)
    .DisableSelection(true)
    .Store(store => store.Add(Html.X().Store()
        .PageSize(100)
        .Buffered(true)
        .AutoLoad(false)
        .Proxy(proxy => proxy.Add(Html.X().AjaxProxy()
                    .Url("/Data/GetData/")
                    .Reader(reader => reader.Add(Html.X().JsonReader()
                                .Root("data")
                            ))
                    ))
        .Model(model => model.Add(Html.X().Model()
                    .Fields(fields => {
                        fields.Add(Html.X().ModelField().Name("Company")); 
                        fields.Add(Html.X().ModelField().Name("Price"));
                        fields.Add(Html.X().ModelField().Name("LastUpdate").Type(ModelFieldType.Date));
                    })
                ))
        ))
    .VerticalScroller(scroller => scroller.Add(Html.X().GridPagingScroller()))      
    .ColumnModel(columnModel => {
        columnModel.Columns.Add(Html.X().RowNumbererColumn().Width(50).Sortable(false));
        columnModel.Columns.Add(Html.X().Column()
                                        .Text("Company")
                                        .DataIndex("Company")
                                        .Flex(1));
        columnModel.Columns.Add(Html.X().Column()
                                        .Text("Price")
                                        .DataIndex("Price")
                                        .Width(70));
        columnModel.Columns.Add(Html.X().DateColumn()
                                        .Text("LastUpdate")
                                        .DataIndex("LastUpdate")
                                        .Width(140)
                                        .Format("HH:mm:ss"));
    })
    .View(view => view.Add(Html.X().GridView().TrackOver(false)))
    .Listeners(listeners => {
        listeners.AfterRender.Handler = "this.store.guaranteeRange(0, 99);";
        listeners.AfterRender.Delay = 100; 
    })
)
Run Code Online (Sandbox Code Playgroud)
  • 然后我添加了另一个控制器,以使其工作,正如线程所说的那样
  • 添加DataController.cs因为这里提到 SUBSTITUING AjaxStoreResult WITH StoreResult
  • DataController.cs也需要

    使用Ext.Net.MVC;

所以我来了!
如果您现在启动IIS Express,则可以在localhost中执行该页面:XXXXX/Examples /

我遇到的第一个问题是:页面试图加载localhost:XXXX/extjs/libraries,这不是MVC-STYLE!

这是由@ Html.X().ResourceManager()完成的,有一种方法可以让它连接到cdn库吗?甚至改变路径!??

在那之后可能会出现其他问题,但是现在我想解决这个小问题

geo*_*ill 8

基于您链接到上面的Web.config文件,我认为您缺少Web.config中的必需<modules><handlers>部分.README.txt中列出了所需的Web.config部分.

http://examples.ext.net/#/Getting_Started/Introduction/README/

这是<system.webServer>示例Web.config中的相应部分.

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add 
            name="DirectRequestModule" 
            preCondition="managedHandler" 
            type="Ext.Net.DirectRequestModule, Ext.Net" 
            />
    </modules>
    <handlers>
        <add 
            name="DirectRequestHandler" 
            verb="*" 
            path="*/ext.axd" 
            preCondition="integratedMode" 
            type="Ext.Net.ResourceHandler"
            />
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

我不知道"这不是MVC-STYLE"在下面的引用中是什么意思.你能提供更多解释吗?

我遇到的第一个问题是:页面试图加载localhost:XXXX/extjs/libraries,这不是MVC-STYLE!

您可以通过设置.RenderScripts(ResourceLocationType.None)和阻止Ext.NET ResourceManager呈现所需的.js和.css文件.RenderStyles(ResourceLocationType.None).

@Html.X().ResourceManager()
    .RenderScripts(ResourceLocationType.None)
    .RenderStyles(ResourceLocationType.None)
Run Code Online (Sandbox Code Playgroud)

您可以通过将ResourceLocationType.None属性更改为来配置ResourceManager以加载CDN文件ResourceLocationType.CDN.

希望这可以帮助.