【问题标题】:Change the base class of a razor view in the view code在视图代码中更改剃刀视图的基类
【发布时间】:2012-05-08 03:59:11
【问题描述】:

请注意,这不是一个重复的问题。我知道我们可以在views/web.config 的razor 部分中指定一个基本视图类型。但我希望我的view1、view2 继承自baseviewA,而view3、view4 继承自baseviewB。在剃须刀中,我怎么能在 ASPX 引擎中这样做:

<%@ Page Language="C#" Inherits="Test.Myproject.Web.Mvc.ViewBase" %>
<%@ Control Language="C#" Inherits="Test.Myproject.Web.Mvc.PartialViewBase" %>

编辑我不关心模型。在我的问题中,baseviewA 和 baseviewB 是完全不同的类。

【问题讨论】:

标签: c# asp.net-mvc-3 razor asp.net-mvc-4


【解决方案1】:

您可以使用@inherits 关键字更改base class in Razor,您的基类只需要从System.Web.Mvc.WebViewPage 派生即可。

所以你的样本:

&lt;%@ Page Language="C#" Inherits="Test.Myproject.Web.Mvc.ViewBase" %&gt;

@inherits Test.Myproject.Web.Mvc.ViewBase

在哪里

public class Test.Myproject.Web.Mvc.ViewBase : System.Web.Mvc.WebViewPage
{
}

【讨论】:

  • 是否可以在razor 中使用&lt;% 语法而不是@
  • @ZainShaikh no &lt;% 在 razor 中仅在 aspx 页面中不受支持。您对@ 符号的使用有什么问题?
  • 也许我会为此发布一个单独的问题,但仍然让我们继续。我有一个模板文件,我将它与客户端 javascript (underscore) 库一起使用来构建用户界面。我想使用 razor 引擎或其他比剃刀更好的引擎从服务器端渲染相同的模板文件。
【解决方案2】:

Inherits 指定要在视图中使用的模型类型。同样,这可以在 Razor 中完成。

<%@ Page Language="C#" Inherits="Test.Myproject.Web.Mvc.ViewBase<Test.Models.MyModel>" %

相当于Razor中的following

@model Test.Models.MyModel

这在视图和部分视图中都是一样的,所以

<%@ Control Language="C#" Inherits="Test.Myproject.Web.Mvc.PartialViewBase<Test.Models.MyModelB>" %>

等价于

@model Test.Models.MyModelB

【讨论】:

  • 没有样板业务。我只想更改视图的基类。
  • 好的,那么唯一的方法是将您的视图保存在不同的文件夹中,并在您要覆盖的每个文件夹中都有一个 web.config。
  • 您确定我们可以在每个视图文件夹中有一些 web.config 文件,这些文件将 override 基本 view/ 文件夹中的配置吗?
猜你喜欢
  • 1970-01-01
  • 2012-08-31
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多