gre*_*mac 20 javascriptmvc asp.net-mvc-3 mvc-mini-profiler
我有一个单页javascript应用程序(使用JavascriptMvc完成)和一个后端,REST服务构建在ASP.NET MVC3之上(使用NServiceMVC完成).
REST服务安装并运行了MiniProfiler,并且每个AJAX请求都会返回X-MiniProfiler-Ids标头.我确实有miniprofiler运行和工作,但我找不到任何关于此的信息,所以我不确定我是否正确地做到了这一点.
这是一个受支持的方案,现在有一种特定的方法吗?
我目前正在做的是:
在HTML应用程序(这是所有静态代码,没有动态的东西),我有:
<script type="text/javascript" src="/api/profiler"></script>
Run Code Online (Sandbox Code Playgroud)
在我的MVC应用程序中,我有:
public ActionResult Profiler()
{
if (!ControllerContext.HttpContext.IsDebuggingEnabled)
{
return new EmptyResult();
}
return new ContentResult() {
Content = StackExchange.Profiling.MiniProfiler.RenderIncludes(
position: RenderPosition.Right,
showControls: true
)
.ToString()
.Replace("<script type=\"text/javascript\">", "")
.Replace("</script>", "")
};
}
Run Code Online (Sandbox Code Playgroud)
很明显,这里有一个黑客删除硬编码<script>
标签.
除此之外,从MVC的其他方面来看,profiler与通常使用完全相同.当您在应用程序中执行导致REST调用的操作时,miniprofiler会在角落中显示它.使用该showControls:true
参数在这里也非常有用所以清除按钮会显示,因为否则您只需获得一个常量的操作列表,因为整个页面基本上不会刷新.
这是"正确"的方式吗,还是有更好的方法?
您的代码中假设 @MiniProfiler.RenderIncludes() 使用 javascript 生成其所有内容。虽然这在目前可能是一个有效的假设,但这种情况可能会改变。
为什么不完全避免黑客攻击并使用 ajax 请求来加载分析器呢?在任何一种情况下,无论是 ajax 还是嵌入式脚本,通过回调插入探查器的行为都会在一定程度上影响探查结果。
<div id="profiler"></div>
<script type="text/javascript">
$.load("#profiler","api/profiler");
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1203 次 |
最近记录: |