2012-03-20 41 views
2

同じタイプの複数の部分ビューを作成する必要がありますが、この部分ビューにはjavascript関数があります。どのように各部分ビューでこの関数の定義を避けることができますか?この関数を別の場所で定義することは望ましくありません。MVC3 with Razor - 部分ビューで複数のJavaScript関数定義を避ける

+1

reusaの作成を検討することもできます部分的に見ることができる。 – jessegavin

答えて

1

部分から出てglobal\externalのJavaScriptファイルにfunctionの定義を移動します:に応じて

外部JS

function foo() {   
    /* ... code ... */ 
} 

部分

foo(); 

または(どのようにfooが定義されているのですか? fooのインスタンス)TE:

var bar = new foo(); 
+0

お返事ありがとうございます。私はこれを考慮しましたが、外部ファイルなしでそれを行う別の方法があるのだろうかと思いました。 – kerzek

+0

あなたは自分のスコープ内にあなたの関数の変数をカプセル化する***を直ちに実行する***のコードを実行することができます... – xandercoded

2

私は非常にjavascriptのrefereceにexternを許可するソリューションを変更することをお勧めします。これができない場合は、次のように動作する可能性があります。

/Views/Shared/MyModelPartial1.cs/

@model MyModel 

<script type="text/javascript"> 
    var a = "@Model.SomeStringProperty"; 
    var b = @Model.SomeNumberProperty; 
</script> 

<span>Some Html!</span> 

/Views/Shared/MyModelPartial2.cs/

@model MyModel 

<script type="text/javascript"> 
    var a = "@Model.SomeStringProperty"; 
    var b = @Model.SomeNumberProperty; 
</script> 

<div>Different Html Than 1</div> 
:まず、私はあなたのような何かをやっていると仮定します

このJavaScriptを2つの部分間で共有しようとしている場合は、

のような別の部分的なビューを作成します。

/Views/Shared/MyModelJavascript.cs/

@model MyModel 

<script type="text/javascript"> 
    var a = "@Model.SomeStringProperty"; 
    var b = @Model.SomeNumberProperty; 
</script> 

/Views/Shared/MyModelPartial1.cs/

@model MyModel 

@Html.Partial("MyModelJavascript", Model) 

<span>Some Html!</span> 

/Views/Shared/MyModelPartial2.cs/

@model MyModel 

@Html.Partial("MyModelJavascript", Model) 

<div>Different Html Than 1</div> 
+0

実際、私は部分ビューを1つしか持っていません。そして、それはいくつかのビューで使用することができます。私は実際にグローバル/外部ファイルでそれを行うようにあなたの推薦を取ると思います。 – kerzek

関連する問題