在ASP.NET MVC视图中转储对象 - 对象转储视图

6

我有一个ASP.NET MVC视图,仅用于测试和诊断目的。偶尔我会将完全不同的对象(模型)传递给它,并呈现其属性以查看对象的状态。但是,这需要为每个对象修改视图。

如何创建一个对象转储器视图?通过对象转储器视图,我的意思是一个视图无需进行任何更改即可处理与其相关的模型的更改。例如,在传递user对象、product对象或其他任何东西时,视图保持不变,同时仍然正确地运行。

return View(user);
return View(product);
return View(googleAnalyticsFeed);
3个回答

26

使用 ObjectInfo 助手来显示您传递给它的每个对象的类型和值。您可以使用它来查看代码中变量和对象的值,此外,您还可以看到有关对象的数据类型信息。

@ObjectInfo.Print(Model)

1
我经常将数据映射到(复杂的)模型中,这可能是我多年来发现的最有用的开发技巧,我一直在使用它,每天都在使用 - 它非常有用,可以快速检查任何视图上的模型数据。干杯。 - Paul
@Paul 很高兴能帮助到你! - shebert
"ObjectInfo.Print" 的效果非常好。如果项目还未引用,请确保引用了"System.Web.Helpers" 和 "System.Web.WebPages"。 - MortenMoulder
在 .Net 5 MVC 中有什么方法能够实现这个吗? - Myster

3

-2

由于这是您的测试视图,建议使用使用C# 4.0动态特性的ViewBag。 在返回视图之前,请将模型保存到ViewBag中,并使用ViewBag在视图上呈现数据。

编辑 假设View只是一个Index视图,那么我们可以通过将ViewBag强制转换为IQuerable来轻松运行for each循环。


我仍然需要为每个新模型更改视图。我只想让视图动态地循环遍历属性并理解嵌套(复杂对象)等。那么,我该怎么做呢? - Saeed Neamati
这个回答没有太多意义。使用ViewBag是完全不必要的。只需使用动态模型类型即可。使用ViewBag并不能以某种神奇的方式让你在一个未实现IQueryable接口的View类中使用它。-1 - Andrew Barber
@Andrew Barber,这个建议将有助于在单个操作中传递数据到视图,并要求发布视图代码以获取更多详细信息。是的,这里不会有任何魔法。 - swapneel
不确定为什么您认为答案不会有帮助。请给我一分钟时间,想一想如何使用Viewbag来显示视图。 - swapneel
2
ViewBag与在视图中显示类完全无关;它只是将模型传递给视图的一种方式。他没有问题做到这一点。他需要知道如何在视图中显示模型,而不更改为不同模型的视图。ViewBag对此毫无帮助。 - Andrew Barber
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接