无法将lambda表达式转换为' Delegate'因为它不是委托类型MVC 5

时间:2016-07-07 10:42:24

标签: c# asp.net-mvc entity-framework lambda

我知道这些问题已被提出

  1. Cannot convert lambda expression to type 'string' because it is not a delegate type
  2. Entity Framework - Cannot convert lambda expression to type 'string' because it is not a delegate type
  3. 但他们都没有帮助我找到我面临的问题

    我试图使用此解决方案

    <div class="form-group">
         @Html.LabelFor(model => model.Postcode_area_name, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
     @Html.TextBox(model => model.Postcode_area_name, new { disabled = "disabled", @readonly = "readonly" })
        </div>
    </div>
    

    使一个编辑字段只读,但我得到一个错误 无法将lambda表达式转换为&#39; Delegate&#39;因为它不是委托类型 我确实使用实体框架工作和使用

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Entity;
    using System.Linq;
    using System.Net;
    using System.Web;
    using System.Web.Mvc;
    using CRM2.Models;
    

    其他问题的建议是使用

    using System.Data.Entity;
    using System.Linq;
    

    应该解决问题,但它对我不起作用 我正在使用MVC 5

    我已使用此解决方案解决了该问题

    @Html.DisplayFor(model => model.Postcode_area_name)
    @Html.HiddenFor(model => model.Postcode_area_name)
    

    但是因为我是MVC和实体框架工作的新手,我想知道为什么另一种方式抛出错误

    对不起英语&#34;错误&#34; 谢谢

2 个答案:

答案 0 :(得分:3)

所以你的原始代码:

<div class="form-group">
     @Html.LabelFor(model => model.Postcode_area_name, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
         @Html.TextBox(model => model.Postcode_area_name, new { disabled = "disabled", @readonly = "readonly" })
    </div>
</div>

您应将其更改为:

<div class="form-group">
     @Html.LabelFor(model => model.Postcode_area_name, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
         @Html.TextBoxFor(model => model.Postcode_area_name, new { @readonly = "readonly" })
    </div>
</div>

请注意,在For上添加了TextBox并删除了disabled = "disabled"

根据@StephenMuecke

删除disabled的原因
  

禁用的控件不提交值

添加For的原因是它的扩展方法签名具有表达式的第一个参数

答案 1 :(得分:1)

  <div class="form-group">
 @Html.LabelFor(model => model.Postcode_area_name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
 @Html.TextBoxFor(model => model.Postcode_area_name, new { @readonly = "readonly" })
</div>

当您使用紧密绑定的实体时