c# - 在 javascript 字符串中的 asp razor View 中转换模型

标签 c# javascript asp.net-mvc-3 view razor

我的 View 生成一些 js 代码。我需要将我的模型转换为接口(interface)类型以获取一些属性。

这是一个例子:

<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>

如您所见,此显示类型而不是值...

你能告诉我为什么以及我该如何解决吗?

最佳答案

您似乎漏掉了几个括号。

@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>
}

如果您的模型实现了接口(interface),那么您甚至不需要强制转换,就可以:

@foreach ( var property in Model.PropertyList ) {
    <text>
        js_array['@(property.id)'] = {};
    </text>
}

关于c# - 在 javascript 字符串中的 asp razor View 中转换模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6792747/

相关文章:

c# - 将 RouteLink 与区域一起使用

javascript - 自动完成显示 [object object] 列表项而不是值

c# - 为什么 string.Substring 不与源字符串共享内存?

c# - 拆分一个字符串,使其丢失 http ://and anything after the '.'

c# - 使用 asp.net 文本框进行 linq to sql 更新的问题

c# - C# 中的++ 操作是原子的吗?

javascript - 如何将 JSON 字符串转换为具有不同结构的 JSON 字符串

javascript - 使用 eval() 在 JavaScript 中将字符串转换为 JSON 对象

javascript - 权威指南 (6ed) 错误?

c# - Controller 和服务层之间的接口(interface)