尝试为html.ValidationMessage和html.TextBoxFor明确指定type参数

时间:2014-03-26 19:52:26

标签: c# html5 asp.net-mvc-4

我收到了这个错误 错误2无法从用法推断出方法'System.Web.Mvc.Html.ValidationExtensions.ValidationMessageFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)'的类型参数。尝试显式指定类型参数。

在我的视图中使用以下代码

index.cshtml

 <div>
@for (int i = 0; i < Model.CartItems.Count; i++)
{ 
     <p>
        @Html.ValidationMessageFor(model => model.CartItems[i].Count)  <== error here
        </p> 
}
 </div>

我在同一视图中的代码中也出错了 错误3无法从以下方法推断出方法'System.Web.Mvc.Html.InputExtensions.TextBoxFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression&gt;,System.Collections.Generic.IDictionary)'的类型参数用法。尝试显式指定类型参数。

    @{int ix = 0;}

    @foreach (var item in Model.CartItems)
    {
        <tr id="row-@item.ProduitId">
            <td>
                @Html.ActionLink(item.Produit.Description, "Details", "Produit", new { id = 
                         item.ProduitId }, null)
            </td>
            <td>
                @item.Produit.Prix
            </td>
            <td>
                @Html.TextBoxFor(model => model.CartItems[ix].Count,      <=== error here
                    new  {style = "width:30px; text-align:right;",
                    onkeyup = "clearUpdateMessage();",
                    onchange = "clearUpdateMessage();"
                    }) 
            </td>
            <td>
                <a href="#" class="RefreshQuantity" data-id="@item.PanierId"
                   txt-id="CartItems_@(ix)__Count">Refresh quantity</a>&nbsp;|&nbsp;  /a>
            </td>
            <td>
                <a href="#" class="RemoveLink" data-id="@item.PanierId"> Enlever du panier >> 
                </a>
            </td>
        </tr>
        ix++;
    }

Panier.cs

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 using System.Web.Mvc; 

 namespace Tp1WebStore3.Models
 {

   public partial class Panier
   {
    [Key]
    public int PanierId { get; set; }
    public int ProduitId { get; set; }

    [Required(AllowEmptyStrings = true, ErrorMessage = " ")]
    [Range(0, 100, ErrorMessage = "Quantité doit être entre 0 and 100")]
    [DisplayName("Quantité")]
    public int Quantite { get; set; }

    public System.DateTime DateCree { get; set; }
    public string CartId { get; set; }
    public decimal Prix { get; set; }

    public virtual Produit Produit { get; set; }
   }
}

1 个答案:

答案 0 :(得分:0)

我终于找到了问题

宣言应该是这样的:

@ Html.ValidationMessageFor(model =&gt; model.CartItems [i] .Quantite)

@ Html.TextBoxFor(model =&gt; model.CartItems [ix] .Quantite,