Html.Hidden导致错误

时间:2012-03-11 21:02:37

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

当我尝试将@Html.HiddenFor(@Model.ID)添加到我的代码中时,访问该页面时出现以下错误:

  

编译器错误消息: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>
}

2 个答案:

答案 0 :(得分:6)

HiddenFor采用表达式。

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

答案 1 :(得分:4)

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