1
我有一个在剃刀使用@Html.HiddenFor
助手创建窗体上的隐藏字段:非侵入式JavaScript将数据添加到@ Html.HiddenFor
@Html.HiddenFor(model => model.BidID, new { id="bidItemID" })
我的视图模式是这样的:
public class BidEditVM
{
[Display(Name = "Bid ID")]
public int BidID { get; set; }
[StringLength(51)]
[Display(Name = "Customer Name")]
public string CustomerName { get; set; }
[StringLength(75)]
[Display(Name = "Bid Name")]
public string BidName { get; set; }
[Display(Name = "Amount")]
public decimal Amount { get; set; }
[Display(Name = "Time")]
public DateTime BidTime { get; set; }
}
HTML呈现时,不引人注意的JavaScript将它添加到隐藏的输入字段中,即使它永远不会需要验证:
<input id="bidItemID" type="hidden" value="5198" name="BidID" data-val-required="The Bid ID field is required." data-val-number="The field Bid ID must be a number." data-val="true">
奇怪的是,它添加的消息和验证甚至不是该局部视图的视图模型的一部分。视图看起来是这样的:
@model AuctionAdmin.Models.ViewModels.BidEditVM
@using (Ajax.BeginForm("UpdateBid", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "modalBidInfo" }))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.BidID, new { id="bidItemID" })
<fieldset>
<legend>Edit Bid</legend>
<div class="display-label">@Html.LabelFor(model => model.CustomerName)</div>
<div class="display-field">
@Html.DisplayFor(model => model.CustomerName)
</div>
<div class="display-label">@Html.LabelFor(model => model.BidName)</div>
<div class="display-field">
@Html.DisplayFor(model => model.BidName)
</div>
<div class="editor-label">@Html.LabelFor(model => model.Amount)</div>
<div class="editor-field">
@Html.EditorFor(model => model.Amount)
</div>
<div class="editor-label">@Html.LabelFor(model => model.BidTime)</div>
<div class="editor-field">
@Html.EditorFor(model => model.BidTime)
</div>
</fieldset>
}
它是在哪里得到这个元数据,我怎么能阻止它?
感谢您的回应 - 不,它没有被证明是有问题的,但我还没有完成所有的验证连线。在一个没有任何意义的领域里,看起来很渺茫。如果它确实会导致问题出现,那么将其设置为空的想法似乎是一个简单的解决方法。 – BKahuna