问题标签 [viewengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
512 浏览

asp.net-mvc-3 - 将选定的视图路径作为 HTML 注释注入到动作输出的开始和结束

我目前正在使用 MVC 3 组合一个多租户 Web 应用程序。至少 30 个不同的网站将共享一个公共代码库,并且在共享类似的底层功能的同时,它们需要看起来有很大的不同。因此,我使用 URL 在内部分离客户端,并使用重写的 Razor 视图引擎(至少在查找视图方面)自动选择给定操作的自定义视图或默认视图。

为了帮助“划分”一个复杂的页面,任何特定的视图都将使用几个局部视图,通常呈现为独立的操作,因此通常自定义视图或局部视图只有很小的 HTML 差异,有助于最小化任何特定于客户的网站。

我希望你遵循这个背景!

因此,一个 HTML 页面可能由许多少量的 HTML 部分视图组成,这些视图可能来自客户端的特定文件夹或通用版本。我希望通过轻松查看文件夹结构中他想要更改的 HTML 位的位置,使我们的设计师更容易对页面进行细微的更改

我的建议是,每个部分都将用 HTML 注释“括起来”,例如:

{部分内容}

显然我可以手动输入这些内容,但这只是自找麻烦、拼写错误、复制然后修改的客户端版本没有使用正确的 URL 更新。我认为应该可以从某些上下文中获取并注入它。

同时,我需要不能对某些 Actions 执行此操作。例如,partial可能会在 textarea 内生成文本,例如,因此评论不适合在那里。总的来说,我很乐意发表这些评论,除非我指定它不合适。

对我来说,这建议在操作上使用 ActionFilter,我可以在站点范围内应用它,然后针对某些操作关闭它。我希望其中一个可覆盖的事件能让我确定这条路径,但我似乎无法找到它存储的任何地方。此外, OnResultExecuting 似乎在选择 Partial 之前触发,而 OnResultExecuted 似乎已经写出了 Partial 的内容,所以我无法在此处插入起始注释。我也找不到对所选部分路径的任何引用。

为了完整起见,我的意图是这个属性只在调试模式下编译时才写这些注释。

那么,有谁知道我如何能够在 FindPartialView 和属性之间没有任何破解的情况下获得所选视图的路径?我的 Attribute 方法是最佳选择还是有更简单的方法来做到这一点?也许已经内置了一些东西!

非常感谢您的帮助。

0 投票
1 回答
110 浏览

asp.net - 在 ASP.Net MVC 中使用自定义视图引擎时来自客户端的不稳定请求

我花了大约 7 个小时试图弄清楚这一点,但一无所获。

这就是我的提琴手痕迹的样子 替代文字

我有两条如下所示的路线已为此页面注册。

对于这个 url,第一个路由匹配,它会执行正确的操作。但是,客户端在一秒钟后发送另一个请求,其中删除了最后一个参数“page-1”并将其替换为“none”。我已经追踪了 XHR,但没有。我不确定这是否是 MVC 框架本身的问题,但是这将如何转化为来自客户端的请求?!!!此外,我使用不同的浏览器(上面的 IE 跟踪)得到不同的行为。有人遇到过这种奇怪的行为吗?如果您愿意,我很乐意提供更多信息。

更新:

我在 IIS 上设置了站点并消除了所有图像、css 或脚本请求。我仍然收到多个请求。在我删除 .htc 之后,原来的 dummyresults 页面现在似乎可以工作了。但是,我有另一个页面(下面的屏幕截图)不是“合作”的。我应该为某些扩展添加 Ignoreroutes 吗?这让我发疯了!!!请原谅图像上的“哔哔”声(IP 原因)。PS:我设置了另一个站点来提供所有静态资源。

替代文字

0 投票
4 回答
8479 浏览

asp.net-mvc - 如何下载 Razor View 引擎

我想下载并安装 ASP.Net MVC 2 的 razor 视图引擎。我可以从哪里下载和安装?

0 投票
2 回答
7227 浏览

asp.net-mvc-2 - 为什么我们在 ASP.NET MVC 中使用 HTML 助手?

在 ASP.NET MVC 项目中使用 HTML 帮助程序后,我们有什么好处、最佳实践或利润吗?

当我尝试使用它们时,我发现我失去了使用 HTML 的速度,并且每当我使用 HTML 帮助程序时都会遇到许多困难。

其他 [非技术人员] 无法理解我使用 Helper 编写的内容,如果我想向他们展示或者他们想做一些他们需要花费更多时间的事情,即使他们有 HTML 的工作知识。

如果我使用 HTML 助手,我会失去速度。当我使用 HTML 时,我只是输入,当然我不知道它。但是使用助手,很难理解。

当我使用 HTML 帮助器时,我们会得到什么?我认为我没有得到任何东西,因为我失去了速度。其他人无法理解我使用 helper 做什么,也无法根据需要自定义代码。

为什么我们使用 HTML 助手?

0 投票
3 回答
8016 浏览

asp.net-mvc - Razor 视图引擎与其他视图引擎相比有哪些优势

我想知道 Razor 视图引擎除了语法相比 Spark、NHaml 或默认 aspx 视图引擎等其他视图引擎之外还有哪些优势。还有它们之间的性能差异是什么

0 投票
1 回答
246 浏览

s#arp-architecture - S#arp Architecture 1.9 + Multi Tenant Custom View Engine

What is the easiest way to create a Custom AreaViewEngine that S#arp uses?

I want to add another directory to search for view for the current tenant, the tenant directory would be part of the domain name (e.g. hm.com), so i would like my view engine to check:

/Tenants/hm.com/Views/Home/Index.aspx

I tried to create a new TenantViewEngine.cs inherited from the AreaViewEngine to add my new paths but I can't get access to the HttpContext to get the host name.

Any ideas?

Thanks. Paul

0 投票
4 回答
2642 浏览

unit-testing - 单元测试 MVC3 Razor 助手/不带字符串的视图

我正在尝试 MVC3 Razor 视图引擎,我正在探索的功能之一是对视图进行单元测试的能力。

我见过很多例子,其中 Razor 视图可以编译成程序集并呈现成字符串。问题是它呈现为字符串,所以我只能进行字符串搜索!

这是我想要做的。

  1. 创建 Razor 助手
  2. 编译助手
  3. 运行编译的助手,传入一个 ViewModel
  4. 以某种 HTML/XML/树结构的形式获取帮助程序的输出

我想这样做的原因是我可以测试输出的特定部分。助手可能会吐出包含各种输出垃圾的 HTML。我想要做的是看看是否有一个具有特定值的复选框(例如)。如果您看过 Selenium 测试,它与我想做的类似,但不是作为服务器驱动的测试。

有没有办法让编译的 Razor(或其他视图引擎)视图发出字符串以外的东西?

0 投票
5 回答
7119 浏览

asp.net-mvc - 有没有办法使用 asp.net mvc Razor ViewEngine 使@section 成为可选?

我有一个类似于以下的 Page.cshtml(不起作用):

正如我所说,这不起作用。如果集合中没有任何内容,我不想定义该部分。有没有办法让这样的工作?如果没有,我的其他选择是什么?我对这个 Razor ViewEngine 很陌生。

编辑

在我的布局中,我有:

我不想要的是当该部分为空时输出的 div 。

0 投票
1 回答
4617 浏览

asp.net-mvc-3 - ASP.NET MVC3 Razor - 将视图放置在备用位置时失去智能感知?

VS2010 Ultimate,带有 Razor 的 ASP.NET MVC 3。

我在我的 MVC3 应用程序中创建了一个自定义视图引擎,它允许嵌套区域,就像这样

等等

这一切都很好,除了我似乎在不在标准~/areas/area_name/views/myview.cshtml位置的视图中失去了智能感知。

有什么建议么?

更新

就在云雀上,我添加了一个@inherits 声明

智能感知开始工作。然后我删除了该声明,它继续工作。

项目文件中是否有一些设置或告诉 Visual Studio 什么样的智能感知应用于打开的文件,而不是文件扩展名?(如果仅使用扩展名,我希望它会更加一致)。

更新 2

虽然向我的每个视图文件夹添加 web.config 可以很好地解决问题,但将 razor 配置放在根 web.config 中却没有。

将所需system.web.webPages.razor部分添加到后~/web.config

  1. 我将 Razor .cshtml 视图文件添加到我的嵌套视图文件夹之一。
  2. 智能感知有效。
  3. 我重命名文件(保留 .cshtml 扩展名)
  4. Intellesense 和语法高亮停止工作。
  5. 我关闭重命名的文件并重新打开它——一切又开始工作了。
  6. 或者,我没有关闭并重新打开文件,而是将其重命名为原来的名称,它再次开始工作。

这感觉就像一个 VS 错误 - 据我所知,重命名文件(但保留正确的扩展名)不应该导致这种行为。我将继续web.config在我的每个视图文件夹中放置单独的 s,因为它可以解决问题,但是当我希望这些设置像其他 web.config 设置一样通过解决方案树传播时,不得不弄乱解决方案是很烦人的。

还值得注意的是,无论 Razor 配置位于何处,无论智能感知是否正常工作,该站点都会继续正常运行。

解决了

Powers That Be 告诉我(难以置信地迅速)这是一个已知问题,已在 MVC3 RTM 和 VS2010 SP1 中得到纠正。更新我的 MVC3 安装并添加 SP1 后问题消失了。

0 投票
1 回答
550 浏览

asp.net-mvc - 如何在 ASP.Net MVC 中实现(排序)不是基于文件的自定义视图引擎?

我创建了一个相当通用的视图引擎,我最初创建的不是针对 ASP.Net MVC。不过现在,我认为将它放在至少可以被 MVC 项目轻松使用的地方是个好主意。我想知道我的项目是否可以很好地映射到 ASP.Net MVC 样式。

我遇到的问题是我的视图引擎在编译时通过 T4 模板生成所有内容。这意味着大部分内容都是静态类型的。然而,大多数 MVC 的类型似乎有点松散。

因此,对于某些视图,您可能会生成以下代码:

而且由于它的工作方式,即使有一个 views/FooView.html 文件,它也可能被处理成一个名为MyView.

那么分配给MyView和ViewDatasay的最佳方式究竟是怎样的呢?我应该只施加限制,即您只能在视图中使用单个字段(基本上是 a )还是?FooBarViewData

我看到的另一个主要问题是 MVC 几乎完全基于文件。当您说RenderView("MyView",data);它将在 /views/ 中查找名为 MyView.aspx 的文件或其他文件时(您当然可以更改它的外观和文件扩展名)。问题是它MyView可能是从一个名为FooView.html. 我应该基本上只为每个可用的视图生成一个巨大的列表吗?从类名到文件系统名的映射?或者,还有更好的方法?

注意:因为我从 T4 模板生成所有视图(并且可能生成 MVC 视图引擎),这意味着我可以编写大量列表和其他极其乏味或糟糕的代码。但在这种情况下,我觉得有比一个巨大的列表更好的方法,而且只保留一个列表会有潜在的问题。