Sản lượng tiêu chuẩn của @Html.HiddenFor(model => model.Id)
làTại sao Html.HiddenFor tạo ra các dữ liệu thuộc tính val-
<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="0" />
Có một nhu cầu cho thế hệ của data-val-*
thuộc tính? Chúng dường như khá dài và không cần thiết chỉ để có thể lưu trữ và trả lại dữ liệu cho POST tiếp theo.
Bạn nên tắt các thuộc tính này? Chúng có ích cho một số kịch bản không?
ps: Hiện nay tôi có một cách để vô hiệu hóa chúng bằng cách tạm thời thiết lập ViewContext.UnobtrusiveJavaScriptEnabled = false
sử dụng hai loại cổ phiếu này:
public static class Extensions
{
public static NoUnobtrusiveJavaScript NoUnobtrusiveJavaScript(this HtmlHelper htmlHelper)
{
return new NoUnobtrusiveJavaScript(htmlHelper.ViewContext);
}
}
public class NoUnobtrusiveJavaScript: IDisposable
{
private bool _disposed;
private readonly bool _unobtrusiveJavaScript;
private readonly ViewContext _viewContext;
public NoUnobtrusiveJavaScript(ViewContext viewContext)
{
if (viewContext == null) {
throw new ArgumentNullException("viewContext");
}
_viewContext = viewContext;
_unobtrusiveJavaScript = viewContext.UnobtrusiveJavaScriptEnabled;
_viewContext.UnobtrusiveJavaScriptEnabled = false;
}
public void Dispose()
{
Dispose(true /* disposing */);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
_disposed = true;
// restore the original UnobtrusiveJavaScriptEnabled state
if (_viewContext != null)
{
_viewContext.UnobtrusiveJavaScriptEnabled = _unobtrusiveJavaScript;
}
}
}
public void EndForm()
{
Dispose(true);
}
}
* mẫu sau mã Html.BeginForm từ FormExtensions.cs và MvcForm.cs
nếu bạn muốn tắt xác thực, hãy xem câu trả lời này: http://stackoverflow.com/questions/4700172/unrequired-property-keeps-getting-data-val-required-attribute/4845768#4845768 – frennky