【问题标题】:Cannot convert lambda expression to type string because it is not a delegate type无法将 lambda 表达式转换为字符串类型,因为它不是委托类型
【发布时间】:2012-12-13 17:54:10
【问题描述】:

我正在尝试使用以下结构/代码创建一个链接按钮:

<%:school => string.Format("<a class='add' href='{0}' title='Add {1} to {4}'><img class='pic2' alt='{2}' src='{3}'/></a>",
                                          Url.Action("AddSchoolToParty", "PartySchool",
                                          new { partyId = Model.PartyId, schoolId = school.SchoolId }),
                                          School.EntityName, string.Empty,
                                          Url.Content("~/Content/images/addImage.png"),
                                          School.EntityName)%>

我得到的错误是:

CS1660:无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型

这也是用我拥有的信息创建链接的正确格式吗?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Kids.MVC.Models.ViewModels.SchoolFormViewModel>" %>

<%@ Import Namespace="Kids.Resources" %>
<%@ Import Namespace="Kids.Resources.Entities" %>
<%@ Import Namespace="MvcContrib.Pagination" %>
<%@ Import Namespace="MvcContrib.UI.Grid" %>
<%@ Import Namespace="MvcContrib.UI.Pager" %>
<%: Html.ValidationSummary(true, Message.ValidationErrorSummary, new{@class= "error"}) %>
<%=Html.DatePickerEnable() %>

这是我在不同页面中使用的格式,这是我想在没有列和 string.format 的标签中重写的按钮链接 - 我想知道重写此链接的正确方法.

column.For(
                        school =>
                        string.Format("<a class='add' href='{0}' title='Add {1} to {4}'><img class='pic2' alt='{2}' src='{3}'/></a>",
                                      Url.Action("AddSchoolToParty", "PartySchool",
                                      new { partyId = Model.PartyId, schoolId = school.SchoolId }),
                                      School.EntityName, string.Empty,
                                      Url.Content("~/Content/images/addImage.png"),
                                      School.EntityName)).Encode(false).Sortable(false);

【问题讨论】:

  • 您是否使用 System.Linq 添加;进入html代码?
  • 是的,你为什么要使用 lambda
  • @JoshuaEnfield 当我删除它时 - 它在 schooldId = school.SchoolId 中以红色显示 school 并且无法解析符号。
  • 我们需要更多。 “学校”从何而来,又是什么?它是你模型的一部分吗?您的意思是键入 S chool 来引用可能的静态类,如它下面的行吗? (注意大写的 S)
  • 这个column 变量是什么?这不是有效的语法。您是否正在使用某些第三方控件?如果是这样,您应该明确说明是哪一个。

标签: c# asp.net-mvc lambda


【解决方案1】:

试试这样:

<a class="add" href="<%: Url.Action("AddSchoolToParty", "PartySchool", new { partyId = Model.PartyId, schoolId = Model.SchoolId }) %>" title="<%: string.Format("Add {0} to {0}", School.EntityName) %>">
    <img class="pic2" alt="" src="<%: Url.Content("~/Content/images/addImage.png") %>" />
</a>

但为了避免这种丑陋的标签汤,我建议你编写一个自定义 HTML 帮助程序,这将使这种语法更加清晰。

【讨论】:

  • 感谢您的帮助,我真的很感激 - 我尝试了您建议的代码,它看起来很棒,但现在当我在我的页面上使用它时,我收到此错误:System.Data.SqlClient.SqlException:INSERT语句与 FOREIGN KEY 约束“School_PartySchool_FK1”冲突。冲突发生在数据库“Kids”、表“dbo.School”、列“SchoolId”中。声明已终止。
  • 我真的不明白这段代码 sn-p 与这个异常有什么关系。我想这完全不相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多