错误:名称' m'在当前上下文中不存在

时间:2013-12-27 05:24:12

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

我使用以下内容:

@model IEnumerable<Abc.Service.Shared.Models.Company>

@Html.TextBoxFor(m >= m.Name , new { @id="CompanySearch" })

我收到错误:

  

CS0103:当前上下文中不存在名称“m”

任何人都可以帮我解决这个问题吗?


更正箭头后,我收到另一个错误:

@Html.TextBoxFor(m => m.Name , new { @id="CompanySearch" })
  

CS0411:方法'System.Web.Mvc.Html.InputExtensions.TextBoxFor&lt; TModel,TProperty&gt;的类型参数(System.Web.Mvc.HtmlHelper&lt; TModel&gt;,System.Linq.Expressions.Expression&lt; System.Func&lt; ; TModel,TProperty&gt;&gt;,string)'无法从使用中推断出来。尝试明确指定类型参数。

4 个答案:

答案 0 :(得分:2)

你的代码有两个问题,

  1. 正如其他大多数人所指出的那样,你的语法错误是“&gt; =”
  2. 您的模型是IEnumerable<Abc.Service.Shared.Models.Company>的一种类型。当您执行@ Html.TextBoxFor时,您正试图从模型中获取属性。在你的情况下,你试图从模型IEnumerable获取属性“名称”,这显然是行不通的。
  3. 我假设Name是您的Abc.Service.Shared.Models.Company对象的属性,并且您正在尝试显示文本框列表。以下是您如何执行此操作的参考: MVC with TextBoxFor having same id within loop

答案 1 :(得分:1)

这里有语法问题,

@Html.TextBoxFor(m >= m.Name , new { @id="CompanySearch" })

应该是

@Html.TextBoxFor(m=> m.Name , new { id = "CompanySearch" })

OR

@Html.TextBoxFor(m => m.Name, htmlAttributes: new { id = "CompanySearch" })

Name应在模型中声明为Public,这应仅适用于单个对象,因为您使用模型类型为IEnumerable,您应该使用循环来访问对象在Collection

答案 2 :(得分:1)

这里有语法问题,

@Html.TextBoxFor(m >= m.Name , new { @id="CompanySearch" })

应该是这样的

@Html.TextBoxFor(m => m.Name , new { @id="CompanySearch" })

但是如果您在视图中使用了{class 1}},则无法获取/使用名称属性 这就是为什么它给你错误

答案 3 :(得分:0)

请参阅您使用的语法

@Html.TextBoxFor(m >= m.Name , new { @id="CompanySearch" })

应该是这样的

@Html.TextBoxFor(m => m.Name , new { @id="CompanySearch" })

有关 MVC

的更多信息,请参阅此链接

http://www.asp.net/mvc