2012-03-11 118 views
1

当我尝试添加@Html.HiddenFor(@Model.ID)我的代码,我得到以下错误,当访问网页:Html.HiddenFor导致错误

编译器错误信息:CS0411:为方法“的System.Web类型参数。 Mvc.Html.InputExtensions.HiddenFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)'不能从使用中推断出来。尝试明确指定类型参数。 。

我试着阅读MSDN,但the documentation is awful(他们不为这个方法的文档中提供

这里只举一个代码示例是我的看法:

@model CustomerService.Entity.Order 
@using CustomerService.Entity 
@{ 
    ViewBag.Title = "OrderDetails"; 
} 
<h2> 
    OrderDetails</h2> 
@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post)) 
{  
    <table border="1"> 
     <tr> 
      <td> 
       <b>Order #</b> 
      </td> 
      <td> 
       @Model.ID 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <b>Description</b> 
      </td> 
      <td> 
       @Model.Description 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <b>Salesperson Name</b> 
      </td> 
      <td> 
       @Model.SalespersonName 
      </td> 
     </tr> 
    </table> 
    <h3> 
     Line Items</h3> 

    <input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" /> 

    @Html.HiddenFor(@Model.ID) 

    <table border="1"> 
     <tr> 
      <td> 
       <b>Line Item ID</b> 
      </td> 
      <td> 
       <b>Description</b> 
      </td> 
     </tr> 
     @for (int i = 0; i < @Model.LineItems.Count; ++i) 
     { 
      <tr> 
       <td> 
        @Model.LineItems[i].ID 
       </td> 
       <td> 
        @Model.LineItems[i].Description 
       </td> 
      </tr> 
     }</table> 
} 

回答

6

HiddenFor需要一个表达式。

@Html.HiddenFor(model => model.ID) 
3

HiddenFor方法应该得到一个Expression作为参数不是一个值:

@Html.HiddenFor(m => m.ID) 

相反的:@Html.HiddenFor(@Model.ID)

方法签名:

HiddenFor<TModel, TProperty>(HtmlHelper<TModel>, 
          Expression<Func<TModel, TProperty>>) 

在纯文本,你应该给一个Expression是可以获得类型的“实例” (在此例中为CustomerService.Entity.Order)并返回所需的属性(在此例中为ID

MSDN