gpt4 book ai didi

asp.net-mvc - 在 MVC 3 项目中使用 T4MVC 生成的代码编译错误

转载 作者:行者123 更新时间:2023-12-03 17:48:13 25 4
gpt4 key购买 nike

我们正在使用 ASP.Net 4 和 MVC 3 框架开发 Web 应用程序。我已经通过 NuGet 安装了 T4MVC,并且所有的 View 、 Controller 和静态内容都成功生成为强类型。

但是,当我尝试编译项目时,它会在生成的文件 T4MVC.cs 中引发错误,即:

'T4MVC_ViewResultBase.FindView(System.Web.Mvc.ControllerContext)': 
return type must be 'System.Web.Mvc.ViewEngineResult' to match overridden member
'System.Web.Mvc.ViewResultBase.FindView(System.Web.Mvc.ControllerContext)'

这是生成的源代码:
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class T4MVC_ViewResultBase : System.Web.Mvc.ViewResultBase,
IT4MVCActionResult
{
public T4MVC_ViewResultBase(string area, string controller, string action):
base() {
this.InitMVCT4Result(area, controller, action);
}

protected override void FindView(System.Web.Mvc.ControllerContext context){}

public string Controller { get; set; }
public string Action { get; set; }
public RouteValueDictionary RouteValueDictionary { get; set; }
}

错误说:
protected override void FindView(System.Web.Mvc.ControllerContext context) { }

应该:
protected override ViewEngineResult 
FindView(System.Web.Mvc.ControllerContext context) { }

但是随后它会引发另一个编译错误,因为此方法应该返回代码。

如果我们检查它继承自的基类 System.Web.Mvc.ViewResultBase,它实际上声明了具有 ViewEngineResult 返回类型的 FindView():
public abstract class ViewResultBase : ActionResult
{
...
protected abstract ViewEngineResult FindView(ControllerContext context);
}

有没有人遇到这个错误?是否与MVC版本有关,我们使用的是MVC 3吗?

非常感谢!
塞尔吉

最佳答案

我想我看到了问题,这是一个 T4MVC 错误。但希望它很容易解决。

您是否有声明返回 ViewResultBase 的 Controller 操作?如果是这样,您能否将返回类型更改为 ActionResult?或者,您可以将返回类型更改为您要返回的具体类型(例如是否为 ViewResult)?

T4MVC 错误在于它没有正确覆盖 ActionResult 类型中的非空方法。

关于asp.net-mvc - 在 MVC 3 项目中使用 T4MVC 生成的代码编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5565950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com