在 MVC3 中登录 Razor 视图

Posted

技术标签:

【中文标题】在 MVC3 中登录 Razor 视图【英文标题】:Logging in Razor view in MVC3 【发布时间】:2011-06-15 09:25:51 【问题描述】:

如何在 Razor 视图中添加日志记录?我想使用 log4net 等日志工具添加调试语句?

【问题讨论】:

【参考方案1】:

我同意其他回复,但这将用于临时调试,例如查找计数或类似情况。

摆弄了一下之后,下面的语法就奏效了。

@ ViewBag.Log = log4net.LogManager.GetLogger("Products.cshtml");

@ViewBag.Log.Debug("Products count = " + Model.Products.ToList().Count);

希望这会对某人有所帮助。

【讨论】:

【参考方案2】:

我强烈反对你这样做。

在我看来,你的观点有逻辑。它使视图难以维护,甚至更难以测试逻辑。

将逻辑移至控制器或视图模型。并改为登录。

【讨论】:

这应该是一条评论。有时很难在告诉他们如何“正确”地做这件事和仅仅帮助他们解决问题之间划清界限。虽然我同意您的观点,但可能有正当理由尝试在视图中进行调试。无论哪种方式,这样的答案都没有真正的帮助。 将逻辑移动到控制器或视图模型确实有助于解决问题。并且这样做所需的工作量是最小的。如果我的回答会说一些乏味或耗时的话,我会同意你的。 你怎么知道逻辑可以移动,更不用说用最小的努力了?【参考方案3】:

听起来您可能最好使用应用程序范围的日志记录方法,因为您不想在视图中捕获逻辑错误。逻辑应该在控制器和(在一定程度上)模型中。

查看此处 -> https://***.com/questions/5363794/what-does-an-mvc-basecontroller-with-logging-look-like 了解如何在整个站点中记录错误和捕获异常。

【讨论】:

以上是关于在 MVC3 中登录 Razor 视图的主要内容,如果未能解决你的问题,请参考以下文章

带有 Razor 的 MVC3 - 避免在部分视图上定义多个 javascript 函数

MVC3 razor 获取视图中的浏览器屏幕宽度和高度

asp.net mvc3.0中视图引擎razor和ASPX可以交互使用吗

MVC3 自定义视图库

为啥 ASP.NET MVC3 区域和 Razor 视图会产生此错误?

MVC3 (Razor) Json 获取Controller中的反序列化数据