当我尝试将@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>
}
答案 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
})