错误:无法将lambda表达式转换为类型'string',因为它不是委托类型

时间:2014-03-04 12:53:16

标签: asp.net-mvc-4

错误:无法将lambda表达式转换为' string'因为它不是委托类型

当我尝试在mvc4中添加cshtml页面时,我收到此错误。 at line

客户名称:@ Html.TextBox(m => Model.CustomerName)

任何人都可以解释它的意义是什么以及它为什么会来到这里?

代码是

@model DataEntryMvcApplication.Models.Customer
@using (Html.BeginForm())
{
    <p>Customer Name: @Html.TextBox(m => Model.CustomerName)</p>
    <p>ID:@Html.TextBox(m=>Model.CustomerId)</p>
    <input type="submit" name="Custtomer" />
}

这是模型类;

namespace DataEntryMvcApplication.Models
{
    public class Customer
    {
        public string CustomerId { get; set; }
        public string CustomerName { get; set; }
    }
}

4 个答案:

答案 0 :(得分:5)

你需要Html.TextBoxFor而不是Html.TextBox:

@model DataEntryMvcApplication.Models.Customer
@using (Html.BeginForm())
{
    <p>Customer Name: @Html.TextBoxFor(m => m.CustomerName)</p>
    <p>ID:@Html.TextBoxFor(m => m.CustomerId)</p>
}

两者之间的差异解释为here

答案 1 :(得分:1)

linq表达式中不存在

Model,它是@Html.TextBox(...)的参数。 m表示Model,您需要使用该变量来访问正确的属性,例如:

<p>Customer Name: @Html.TextBoxFor(m => m.CustomerName)</p>
<p>ID:@Html.TextBoxFor(m=>m.CustomerId)</p>

答案 2 :(得分:0)

试试这个,

@model DataEntryMvcApplication.Models.Customer
@using (Html.BeginForm())
{
    <p>Customer Name: @Html.TextBox(m => m.CustomerName)</p>
    <p>ID:@Html.TextBox(m=>m.CustomerId)</p>
    <input type="submit" name="Custtomer" />
}

答案 3 :(得分:0)

花了很多年才试图解决这个问题。恢复旧页面并逐个进行更改后,导致问题的行显示为:

<img src="~/images/Captcha/@ViewBag("CaptchaName")" />

我认为它一定不喜欢试图访问视图包?无论如何,评论这个解决了这个问题。