2014-10-17 138 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

相关问题