Стандартный вывод @Html.HiddenFor(model => model.Id)
составляет
Требуется ли генерация атрибутов data-val-*
? Они кажутся довольно многословными и не нужны только для того, чтобы иметь возможность хранить и возвращать данные для следующего POST.
Хорошая ли идея отключить эти атрибуты? Полезны ли они для некоторых сценариев?
ps: В настоящее время у меня есть способ отключить их, временно установив ViewContext.UnobtrusiveJavaScriptEnabled = false
с помощью этих двух классов:
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);
}
}
* шаблон, следующий за кодом Html.BeginForm из FormExtensions.cs и MvcForm.cs