【问题标题】:Expression Expected error when trying to add a class to an HTML Dropdown Helper尝试将类添加到 HTML Dropdown Helper 时出现表达式预期错误
【发布时间】:2018-10-06 02:12:39
【问题描述】:

当我尝试将一些引导样式应用到我视图中的下拉菜单时,我目前在 @-symbol 下遇到错误。下拉菜单是使用Html.DropdownList HTML 助手创建的。

错误显示:

预期的表达式。匿名类型成员名称只能从不带参数的简单名称或限定名称中推断出来

Status : @Html.DropDownList("surveyStatus", "All", New With {@class = "form- control"})

【问题讨论】:

  • @class 是 C#。 VB 将是[class]
  • 这似乎也不起作用。这将单词“类”视为变量而不是 HTML 属性 Class。
  • 啊,我觉得应该是.class。也许.[class] 但我不这么认为。我自己只在 C# Razor 中做过这个,但是 VB 对象初始化器需要在每个属性名称前加上点。
  • .[class] 也不起作用。还是谢谢。
  • .class 工作了,我说我认为应该是这样吗?您对以下答案的评论表明确实如此。

标签: html asp.net-mvc vb.net razor


【解决方案1】:

您正在使用 C# 语法创建匿名对象。对于 VB.NET 使用

New With { .class = "form-control"}

注意,DropDownList 方法的签名是错误的。您必须使用以下其中一项:

  • DropDownList(String, IEnumerable<SelectListItem>, Object)
  • DropDownList(String, String, IEnumerable<SelectListItem>, Object)
  • DropDownList(String, String, IEnumerable<SelectListItem>, Object, Object)

另见 Overload List 来自 MSDN 的方法。

【讨论】:

  • 这给了我一个“重载解析失败,因为在没有缩小转换的情况下无法调用可访问的 'DropDownList'”错误。
  • @DannyJames,这意味着您询问的问题已解决,您现在遇到了不同的问题。您是否查看过 DropDown 方法的重载?您要调用哪一个,并且在该上下文中传递的参数是否有意义?我没有看到StringStringObject 类型的参数有任何重载。你呢?
  • 我使用的重载接受list (of String)(使用surveyStatus stringViewBag检索)、String('All')和Object(调用HTML 属性)。 DropDown 方法可以在没有重载的 HTML 属性部分的情况下正常工作。只是当我尝试通过外部类添加样式时才遇到问题。
  • @DannyJames ,我们的意思是 DropDownList 方法的重载。我将合适的签名附加到我的答案中。
  • 为了记录,是@Alexander 发布了超载链接。但是,如果您打算使用第二个重载,您可能应该计算它具有的参数数量以及您提供的参数数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多