在javascript字符串内的asp razor视图中铸造模型
Posted
技术标签:
【中文标题】在javascript字符串内的asp razor视图中铸造模型【英文标题】:Casting model in asp razor view inside javascript string 【发布时间】:2011-07-22 16:02:30 【问题描述】:我的视图生成了一些 js 代码。我需要将我的模型转换为接口类型以获取一些属性。
这是一个例子:
<script type="text/javascript" language="javascript">
var js_array = [];
@for (var i = 0; i < ( Model as MyProject.Models.IMyInterface ).PropertyList.Count; i++)
<text>
js_array['@( Model as MyProject.Models.IMyInterface ).PropertyList[i].id'] = ;
</text>
</script>
我明白了:
<script type="text/javascript" language="javascript">
var js_array = [];
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = ;
</script>
但我需要:
<script type="text/javascript" language="javascript">
var js_array = [];
js_array['1'] = ;
js_array['2'] = ;
js_array['3'] = ;
js_array['4'] = ;
js_array['5'] = ;
js_array['6'] = ;
js_array['7'] = ;
js_array['8'] = ;
</script>
你可以看到这个显示类型而不是值...
你能告诉我为什么以及如何解决它吗?
【问题讨论】:
之所以这样是因为@()
是一个特殊的块,它只解析()
中包含的内容。您的代码只有()
中的类,因此它在该类上调用ToString
,然后假定.PropertyList...
只是常规输出,因为它不再受@
的控制。
【参考方案1】:
你好像少了几个括号。
@for (var i = 0; i < ( Model as MyProject.Models.IMyInterface ).PropertyList.Count; i++)
<text>
js_array['@( (Model as MyProject.Models.IMyInterface).PropertyList[i].id )'] = ;
</text>
我会让它更具可读性,例如:
@foreach ( var property in ((MyProject.Models.IMyInterface)Model).PropertyList )
<text>
js_array['@(property.id )'] = ;
</text>
如果你的模型实现了接口,那么你甚至不需要演员表,制作它:
@foreach ( var property in Model.PropertyList )
<text>
js_array['@(property.id)'] = ;
</text>
【讨论】:
以上是关于在javascript字符串内的asp razor视图中铸造模型的主要内容,如果未能解决你的问题,请参考以下文章
javascript asp .net mvc razor中的访问模型
在 ASP.NET Core Razor 页面中使用 JavaScript 更改活动导航栏链接
ASP.NET Razor Pages JavaScript 文件返回未定义的错误
将数据从 javascript 传递到 asp.net core 2 razor 页面方法
在 asp.net mvc razor 应用程序中将 Datetime C# 类型转换为 Date javascript