【问题标题】:T4MVC and named parametersT4MVC 和命名参数
【发布时间】:2010-08-15 18:14:48
【问题描述】:

我在使用 T4MVC 和命名参数时遇到了错误。我有一个控制器:

public class ProductsController : Controller
{
    public virtual ViewResult List(int page = 1)
    {
        // foo.DoSomething()
    }
}

T4MVC 似乎也创建了一个重载 List()。结果是调用

myProductsController.List(3)

正确执行 foo.DoSomething()。但是调用

myProductsController.List()

不执行 foo.DoSomething() - T4MVC 创建了一个空的 List() 重载。

我已将 T4MVC 从我的项目中移除,现在一切正常。但我真的很想能够使用它——我是否在某处缺少设置?

【问题讨论】:

  • 只要确保您在下面看到我的更新。谢谢!

标签: asp.net-mvc t4mvc


【解决方案1】:

更新:好的,我现在有一个真正的修复。它已签入 Codeplex 存储库。您可以前往here 获取最新的 T4MVC.tt。在我将其包含在下一个正式版本中之前,如果您可以尝试并确认它对您有用,那就太好了。谢谢!


你是对的,这里有一个问题。我以前没有遇到过这种情况。对于短期快速修复,只需从 T4MVC.tt 中删除以下代码(大约第 370 行):

<#foreach (var method in controller.ActionMethodsUniqueWithoutParameterlessOverload) { #>
        [NonAction]
        [<#= GeneratedCode #>, DebuggerNonUserCode]
        public <#=method.ReturnTypeFullName #> <#=method.Name #>() {
            return new T4MVC_<#=method.ReturnType #>(Area, Name, ActionNames.<#=method.ActionName #>);
        }
<#} #>

但我需要寻找真正的解决方法。通常,这一代发生在动作没有无参数过载时。它只需要检测一个具有所有可选参数的动作基本上应该被视为无参数情况。

【讨论】:

  • 太好了,该修复将在 2.6.22 中,每当我推出新版本时。
猜你喜欢
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2016-07-26
  • 2011-11-16
  • 1970-01-01
相关资源
最近更新 更多