【发布时间】:2011-10-05 01:17:05
【问题描述】:
希望有人可以帮助我解决这个问题.....我正在构建一个 MVC3 项目,但我似乎无法弄清楚为什么我的部分视图无法执行任何内联 javascript 函数。这是一个虚构的例子,但希望能展示我想要实现的主体......
我在视图中有一个项目列表,称为项目。
foreach (var item in Model.SaleItems)
{
<div>@Html.ActionLink((string)item.ID, "Item", new { ID = @item.ID })</div>
}
如果用户单击其中一个项目,他们将被发送到一个页面,其中包含有关所选项目的详细信息。在这个页面上,有一个菜单,有 3 个选项;详细信息、评论、图像(每个都是部分视图)。如果用户从菜单中选择详细信息选项,详细信息部分将呈现来自网络服务(如 Google 可视化 API)的一些图表。
这是我的部分视图,其中包含用于加载图表的脚本:
<div>
<h4>Details</h4>
<div id= "detailsContainer"></div>
</div>
<script type="text/javascript">
$(document).ready(function () {
google.load('visualization', '1', { packages: ['table'] });
google.setOnLoadCallback(drawDetailsTable);
});
function drawDetailsTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', '');
data.addColumn('string', '');
data.addRows(4);
data.setCell(0, 0, 'Color');
data.setCell(0, 1, '<b>@Model.Color</b>');
data.setCell(1, 0, 'Size');
data.setCell(1, 1, '<b>@Model.Size</b>');
data.setCell(2, 0, 'Weight');
data.setCell(2, 1, '<b>@Model.Weight</b>');
data.setCell(3, 0, 'Material');
data.setCell(3, 1, '<b>@Model.MainMaterial</b>');
var table = new google.visualization.Table(document.getElementById('detailsContainer'));
var options = { allowHtml: true };
table.draw(data, options);
}
</script>
有人知道为什么这不起作用吗?如果我将脚本从局部视图移动到视图,并在主视图的 ActionResult 中静态声明一个项目,它将起作用,但除此之外它不起作用。
提前致谢!
【问题讨论】:
-
您确定没有调用 javascript 吗?您是否尝试过调试它并设置断点以查看它是否在 javascript 处于部分状态时被命中?
-
如果您将脚本放在托管局部视图的页面中,它应该可以工作。这是真的吗?如果没有会发生什么(来自萤火虫的错误)?
-
@shuniar - 是的,我已经尝试过警报和断点,我也尝试过添加另一个脚本来调用脚本,但运气不好!
-
@Iridio - 是的,如果我将脚本移动到托管部分的页面,它会起作用。唯一的问题是,如果用户选择了不同的颜色、大小或重量的项目,图表将不会更新,只显示原始 actionResult 返回的内容。
-
这是一个有同样问题的人的链接,但我似乎找不到解决方法....groups.google.com/group/google-maps-js-api-v3/browse_thread/…
标签: asp.net-mvc-3