2014-10-17 130 views
2

我有一個強烈的A型模型部分視圖。 是否可以將模型數據傳遞給外部JavaScript?如何將模型數據從局部視圖傳遞到JavaScript?

我的局部視圖臨時是這樣的:

@model MyProject.Models.myModel 
<script src=".../myScript.js"><script> 
<span> 
     @Html.DisplayFor(model => model) 
     //how do I pass data to myScript.js? 
</span> 

在外部JavaScript(myScript.js):

$(document).ready(function() { 
    //how do I get data from the partial view? 
}) 

回答

0

首先,具有局部視圖內的腳本是不推薦的,所以我我會用非局部視圖來說明我的答案。

你所要求是不可能的,但是你肯定能有這樣的事情在你的局部視圖的父視圖:

@model MyProject.Models.ParentModel 
... 
<script src=".../myScript.js"><script> 
... 
<span> 
     ... 
     @Html.DisplayFor(model => model) 
     ... 
</span> 
... 
<script> 
     $(document).ready(function(){ 
      var jsVariable = '@Model.MyModelVariable' 
     }) 
<script> 
... 

這樣,你會在你的腳本得到一個強類型模型的好處,但請注意,這違反了不顯眼的js原則......但是,合理使用是無害的。

我找到一個很好的做法,使用Module pattern這樣的:

<script> 
    $(document).ready(function(){ 
     var mod = new MyModule({ 
      foo : '@Model.Foo', 
      bazSelector: '@Html.NameFor(model => model.Baz).ToString()' 
      // ... other module options 
     }) 
    }); 
<script> 

然後在你的外部文件,你可以有你的模塊:

function MyModule(options){ 
    // use the options created from a strongly typed model... 
} 
+0

我想我會去AJAX調用的JavaScript從控制器獲取所有數據,而不是單獨進行。謝謝你的建議 :) – 2014-10-17 06:42:02

相關問題