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

时间:2012-10-12 14:00:47

标签: asp.net-mvc razor project visual-studio-2012 ext.net

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

所以,我想做的是:

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

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

我现在正在做的事情:

  • 关注此thread我正确设置了web.config!
  • 让VS2012识别Ext.Net参考

以下是:

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

http://diffchecker.com/v99ScX0x

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

http://diffchecker.com/7UEK058Y

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

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

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

  • 现在我继续关注我linked above
  • 的主题
  • 创建受控命名的"示例" - > 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; 
    })
)
  • 然后我添加了另一个控制器以使其正常工作,正如线程所说
  • 将DataController.cs添加为referred here 替换 AjaxStoreResult与StoreResult
  • DataController.cs还需要

    使用Ext.Net.MVC;

所以我来了! 如果您现在启动IIS Express,则可以在localhost:XXXXX / Examples /

中执行该页面

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

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

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

1 个答案:

答案 0 :(得分:8)

根据您链接到上面的Web.config文件,我认为您缺少Web.config中所需的<modules><handlers>部分。所需的Web.config部分列在README.txt。

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

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

示例

<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>

我不知道“那不是MVC-STYLE”在以下引文中的含义。你能提供更多解释吗?

  

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

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

示例

@Html.X().ResourceManager()
    .RenderScripts(ResourceLocationType.None)
    .RenderStyles(ResourceLocationType.None)

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

希望这有帮助。