将ASP.NET体系结构与Sencha Ext JS MVC体系结构相结合

时间:2012-07-16 02:29:42

标签: asp.net extjs ascx extjs-mvc

下面是JavaScript文件,它是我的extjs 4 MVC应用程序的根应用程序文件。

我完全按照这些说明操作,并使用IIS 7作为我的网络服务器:
http://docs.sencha.com/ext-js/4-1/#!/guide/application_architecture

按照这些说明为框架配置IIS:
http://www.sencha.com/forum/showthread.php?33266-Some-Problem-with-JSON&p=229858&viewfull=1#post229858

我想要一个ASP.NET用户控件(ascx文件)并将其添加到我的页面。它已经注册了,但似乎Sencha框架接管并忽略了我在页面中的内容。我只是在MVC教程中获取了他们的index.html文件,并将其设置为aspx页面并进行了一些小的调整。如何让控件显示出来?如果这不可能,您是否建议我引用此 app.js 文件(并将其重命名为 control_x.js 而不是 app.js )在ascx文件中,然后将用户控件(ascx)和另一个(当前不工作)粘贴到ASP.NET(aspx)页面中?从本质上讲,我不想在我的整个应用程序中依赖这个框架,只是我不想自己构建的控件。

app.js:

Ext.application({
    requires: ['Ext.container.Viewport'],
    name: 'AM',
    appFolder: 'app',

    controllers: [
        'Users'
    ],

    launch: function () {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',

            items: {
                xtype: 'userlist'
            }

        });
    }
});

Users.js(Controller):

Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',

    stores: [
        'Users'
    ],

    models: [
        'User'
    ],

    views: [
        'user.List',
        'user.Edit'
    ],

    init: function () {
        console.log('Initialized Users! This happens before the Application launch function is called');
        this.control({
            'viewport > panel': {
                render: this.onPanelRendered
            },
            'viewport > userlist': {
                itemdblclick: this.editUser
            },
            'useredit button[action=save]': {
                click: this.updateUser
            }
        });
    },

    onPanelRendered: function() {
        //console.log('The panel was rendered');
    },

    editUser: function(grid, record) {
        //console.log('Double clicked on ' + record.get('name'));
        var view = Ext.widget('useredit');
        view.down('form').loadRecord(record);
    },

    updateUser: function(button) {
        //console.log('clicked the Save button');
        var win    = button.up('window'),
            form   = win.down('form'),
            record = form.getRecord(),
            values = form.getValues();

        record.set(values);
        win.close();
        // synchronize the store after editing the record
        this.getUsersStore().sync();
    }

});

1 个答案:

答案 0 :(得分:1)

这里的答案是表现。如果您正在为应用程序使用JavaScript,请将它们保存在同一页面上。否则,当您切换页面时,您的JavaScript将不得不重新加载。