【发布时间】:2015-01-10 05:07:23
【问题描述】:
我正在尝试从局部视图中调用控制器操作 (JsonResult):
var departmentsViewJS = {
view: "accordion",
multi: true,
cols: @Html.Action("GetDepartmentsJson")
};
动作被调用,美妙的Json替换了输出中的@Html.Action,但是整个视图(_Layout、View和partial)以纯文本的形式呈现到页面上。如果我只用括号替换 Action,如下所示:
var departmentsViewJS = {
view: "accordion",
multi: true,
cols: []
};
页面渲染得非常好(但没有这些列)。我们不允许部分地做这样的事情,还是我在某个地方搞砸了?
这是一个渲染输出的例子:
var departmentsViewJS = {
view: "accordion",
multi: true,
cols: [{"Id":25,"DocRoot":"Test","Name":"Test","DepartmentKeywords":null},{"Id":27,"DocRoot":"HumanResources","Name":"Human Resources","DepartmentKeywords":null}]
};
如果我将渲染的 Json 复制到 @Html.Action 上,页面也可以正常渲染。
【问题讨论】:
-
你的剧本是不是部分的?
-
是的,javascript 在部分中。
-
我不知道这是否是您的问题的原因,但强烈建议不要将脚本放在您的部分中。它被插入到页面的中间,并可能对脚本造成非常奇怪的影响
-
是的,我对这些问题很熟悉。我正在研究一种有点……非正统的设计策略。但就像我在帖子中所说的那样,javascript 在所有情况下都可以正常工作,除非我调用控制器操作(包括当我复制/粘贴控制器操作结果代替控制器操作时)。
-
那么你想以某种方式调用@Html.Action 并将结果分配给cols 吗?
标签: asp.net-mvc json asp.net-mvc-4 partial-views