ExtJSの二重のActionResultは同じのJSファイルIDの紛争解決を共有します

MVC + ExtJSには、アクセス制御を実現使用して、プロジェクトをコントローラ内のActionResultに基づいており、次の2つの新しいのActionResultを作成する必要があり、異なるパラメータによるページがあります。

ページレベルではなく、データレベルに基づいており、なぜ私に聞かないでください、私は、これは歴史から残された問題であることを言いたいです。

今、私たちが問題に直面している、よく知られているが、2つのActionResult 2つのページが同じJSファイルを共有しており、このファイルはExtJSにある、ExtJSにはドムがExt.getCmp(「」)を介して取得することになってしまう、そして、唯一のオリジナルID・ページは現在固有のものではないとなり、イベントは混乱を呼び出します。

昨日は数年のためのソリューションを求めていました。

方法1:ユニークなIDを生成するために、ページパス+ Idが接尾辞を取得します。

  実際、ケースされています。

  次のようにコードがあります。var URL = window.location.href;

  結果を取得し、取得した代わりに、現在のプレーンパスで、ExtJSのフレームワークページのパスです。

方法2:ページがロードされると、ID +同上のGuidサフィックスの自動生成されたクラスは、ユニークなIDを生成します。

  練習はいけない、それは理論的には可能です。

方法3:LogisticsMgr / MatRequireView.aspx.js MatType = 111:などの使用のJSサフィックス送信パラメータ、?

  私たちは、その後、各コントロール+ Idをサフィックスは、ユニークなIDを生成し、111を取得します。

ウェイズ:

Ext.namespace( "JsHelper" );
// 获得JS文件后面的参数如test.js?ユーザー= WUFはwufei 2013年10月25日によって作成 
JsHelper.GetJsParamValue = 機能(パラメータ){ 

    VARの RNAME = 新しい正規表現(「(\\?(。*))? $」するvar JSS = document.getElementsByTagName( 'スクリプト' )。
    VAR i = 0; I <jss.length; iは++ ){
         VARの j個の=のJSS [I]を、
        もし(j.src && j.src.match(RNAME)){
             VARの OO = j.src.match(RNAME)[2 ]。
            もし(OO &&(T = oo.match(/([^&=] +)=([^ =&] +)/G))){
                 VARは L = 0、L <t.length; L ++ ){ 
                    R = T [L]。
                    VaRの TT = r.match(/([^&=] +)=([^ =&] +)/ )。
                    もし(TT && TT [1] ==のPARAM)戻り TT [2 ]。
                } 
            } 
        } 
    } 
    戻り '' 
}

メソッド呼び出します。var idPre = JsHelper.GetJsParamValue( "MatType"); 

これまでのところ、問題が解決され、ステートメントIDとアクセスIDは、すべてのそれに加えて可変です。

 

注意:このプログラムはJsのは一度だけロードされているため無効であるので、パラメータのページを開いた後が正しくありません。

我々は、適切な指導・ソリューションを願っています。

 

ます。https://www.cnblogs.com/ushou/p/3387299.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34343308/article/details/93162917