【问题标题】:Delegate 'Func' does not take 0 arguments委托 'Func' 不接受 0 个参数
【发布时间】:2014-02-07 16:55:53
【问题描述】:

我正在尝试将列添加到 MVC 中的网格,现在 Column 方法的第一个参数采用文本字符串。所以我试图使用 lambda 函数从绑定对象中检索一个字符串,这是我目前所拥有的,但是编译器返回一个委托 'Func' 不接受 0 个参数

g.AddActionColumn(((Func<User, string>)((x)=> {return x.CurrentApplication.Name;}))())

网格绑定到IEnumerable&lt;User&gt;CurrentApplication 是一个名为Application 的类。

AddActionColumn的签名是:

 public TbbGrid<TModel, TId> AddActionColumn(string linkText, 
    string action = null, string controller = null, string area = null, 
    bool usePreviousUrl = false, bool isVisible = true,
    Func<TModel, bool> condition = null, string cellCssClasses = null, 
    string linkCssClasses = null, string headerCssClasses = null, 
    string headerText = null, string emptyText = null, 
    string propertyName = null, bool isSortable = false, 
    string previousUrlOverride = null)

【问题讨论】:

  • AddActionColumn的签名是什么?
  • 我用 AddActionColumn 的签名更新了原帖
  • 真的需要对这个功能做点什么。它不可能接受这么多参数。
  • 你希望x.CurrentApplication.Name填写AddActionColumn方法的什么参数?
  • LinkText 是它应该填充的内容

标签: c# asp.net-mvc lambda


【解决方案1】:

它不起作用的原因是因为AddActionColumn 没有将Func&lt;&gt; 作为其第一个参数,而是采用string

你不能只传递调用时返回字符串的东西,因为这个 API 不是这样设计的。

【讨论】:

  • 我知道,我想做的是让 Func 返回一个内联字符串,我知道这是可以做到的。我只是无法让它接受正确数量的参数
  • @Risryn 您希望从哪个用户那里获取字符串?
  • 当前行中的用户作为网格填充。如果函数接受 func 我会使用 x => x.CurrentApplication.Name
  • @Risryn - 但函数接受Func&lt;&gt;,所以你不能这样做!
  • @Risryn 但事实并非如此。它需要一个字符串现在。如果你想从用户那里得到一个字符串,你需要有一个用户现在。如果你不这样做,那么你需要重新设计函数来接受一个委托,而不是一个字符串,如果它将成为用户提出的那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多