2012-03-11 119 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