我有一个强有力的A型号部分视图。
是否可以将模型数据传递给外部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 :(得分: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...
}