【问题标题】:Inject comment with partial name during RenderPartial - asp.net razor在 RenderPartial 期间注入带有部分名称的评论 - asp.net razor
【发布时间】:2013-11-06 02:02:07
【问题描述】:

mvc4,剃刀视图引擎。如果在调试模式下,像这样包含部分的 sn-p 会留下注释说明它注入的部分,这将很有用。有没有我找不到的扩展点?显然,我可以在部分视图中输入此评论,但这听起来 WAAYY 工作量太大,对任何人都没有乐趣。

index.cshtml

<div class="somecontainer">
    @foreach(var thing in Model.Things) {
        Html.Partial("ThingPartial",thing)
    }
</div>

ThingPartial.cshtml

@model ThingModel
<h1>@Model.Name<h1>
<p>@Model.Description</p>

会生成这样的html

<!--razorView:things/index-->
<div class="somecontainer">
  <!--partialView:ThingPartial-->
  <h1>Name 1<h1>
  <p>Description 1</p>

  <!--partialView:ThingPartial-->
  <h1>Name 2<h1>
  <p>Description 2</p>

  <!--partialView:ThingPartial-->
  <h1>Name 3<h1>
  <p>Description 3</p>
</div>

动机 我希望我的测试人员能够使用 cmets 编写更准确的错误报告,而无需我的开发人员/我做任何额外的事情!

我的想法是在 global.asax.cs 中可配置的,就像这样

  ViewEngines.Engines.Clear();
  RazorViewEngine viewEngineToAdd = new RazorViewEngine();
  //I COMPLETELY MADE THIS LINE UP, THESE THINGS DON'T EXIST (but I want them to!
  viewEngineToAdd.PreRender += (OutputStream,IView) => OutputStream.Write(@"<!--"+IView.Name+"-->")
  ViewEngines.Engines.Add(viewEngineToAdd);

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

试试这个:

<div class="somecontainer">
    @foreach(var thing in Model.Things) {
        Html.Raw("<!--" + thing + "-->");
        Html.Partial("ThingPartial",thing)
    }
</div>

【讨论】:

  • 我会给你一个赞成票,但这与在部分中手动写出基本相同。我希望我的测试人员能够使用 cmets 编写更准确的错误报告,而无需我的开发人员/我做任何额外的事情!
  • @scaryman:那你期待什么样的答案?如果要生成输出,则必须在某处实际定义此输出。这只是写在一个地方,我会说这不是很详细。
  • razor 视图引擎中的扩展点——我可以在 global.asax.cs 中的代码中进行配置。我将在问题中添加我想要的模型。
  • 是的,它只在一个地方,但这是一个人为的例子。我的实际代码库有 ~50 个部分和 ~20 个视图
  • @scaryman:我无法帮助您制作模型,但您可以创建一个方法 Html.AdvancedPartial,使用提供的参数调用 Html.Raw 和 Html.Partial。这样你就可以像现在调用Html.partial 一样在任何地方调用它。
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
相关资源
最近更新 更多