【问题标题】:The 'inherits' keyword is not allowed when a 'model' keyword is used使用“模型”关键字时,不允许使用“继承”关键字
【发布时间】:2014-01-30 09:32:00
【问题描述】:

您好,我正在尝试从我的控制器调用 RazorEmail 模板,如下所示

 public EmailResult TestEmail(EmailModel model)
    {
        To.Add(model.Email);
        From = "test@test.com";
        Subject = "Testt Mail";
        return Email("EmailTemplate", model);
    }

在视图中我的模板在下面

~/Views/Template/EmailTemplate.html.cshtml 

@inherits System.Web.Mvc.WebViewPage

@model W2G.Models.EmailModel

首先当我尝试访问时出现以下错误

The view must derive from WebViewPage, or WebViewPage<TModel>.

我从这里得到了解决方案https://stackoverflow.com/a/8127539/2318354

但是现在我收到了这个错误。请帮助我。花了我很多时间

【问题讨论】:

  • 试试@inherits System.Web.Mvc.WebViewPage&lt;W2G.Models.EmailModel&gt;
  • @KhanhTO 我已经尝试过了,但现在我有这个错误“视图必须从 WebViewPage 或 WebViewPage 派生。”
  • 你声明了泛型类型&lt;W2G.Models.EmailModel&gt;吗?
  • 您是在 MVC 内部使用它还是在使用 razor 的外部类中使用它?
  • 这是我正在使用的外部 ActionMailer.Net.Mvc 类

标签: c# asp.net-mvc razor razorengine


【解决方案1】:

如果你在 mvc 范围内使用视图,@inherits 等效于 @model

一般在你使用的时候会说

@inherits MyWebViewPage<dynamic>

这意味着您的 @Model 变量将与您使用的类动态相同

@model dynamic

我不了解您的项目和实施,但尝试删除继承(它应该从您保存在 Views 文件夹中的 web.config 中获取它)

但是当你在外面使用时(所以剃须刀无法读取你的 web.config)你应该指定基类

@inherits System.Web.Mvc.WebViewPage<W2G.Models.EmailModel>

阅读此article please

【讨论】:

  • 或者在你的cshtml文件的某个地方你写了“@model”而不是“@Model”
  • 上面的代码确实正确地使用了“@model”。这个解决方案效果很好。 +1。
猜你喜欢
  • 2018-05-30
  • 2014-05-25
  • 1970-01-01
  • 2012-12-15
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
相关资源
最近更新 更多