- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了自己的 HtmlHelper 扩展方法来显示时间输入。
public static MvcHtmlString TimePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
if (expression == null)
{
throw new ArgumentNullException("expression");
}
string expressionText = ExpressionHelper.GetExpressionText(expression);
string value = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).Model.ToString();
return TimePicker(htmlHelper, expressionText, value);
}
public static MvcHtmlString TimePicker(this HtmlHelper helper, string name, string value)
{
TagBuilder builder = new TagBuilder("input");
builder.MergeAttribute("type", "time");
builder.MergeAttribute("id", name);
builder.MergeAttribute("name", name);
if (value != null)
{
builder.MergeAttribute("value", value);
}
return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
}
我是这样用的:
@Html.TimePickerFor(model => model.StartTime)
当时间无效时,我添加这样的错误:
ModelState.AddModelError("StartTime", "The selected time is already taken.");
添加此错误时,它应该将 input-validation-error
类添加到输入中,但它没有。我无法让它工作。它确实在 ValidationSummary
中显示错误,并将该类添加到默认输入。任何帮助将不胜感激!
我已经尝试过这样添加它,但是仍然不会添加类:
var validation = helper.GetUnobtrusiveValidationAttributes(name);
foreach (KeyValuePair<string, Object> attribute in validation)
{
builder.MergeAttribute(attribute.Key, attribute.Value.ToString());
}
编辑:找到临时解决方法,但未能解决问题
ModelState modelState;
if (helper.ViewData.ModelState.TryGetValue(name, out modelState))
{
if (modelState.Errors.Count > 0)
builder.AddCssClass("input-validation-error");
}
最佳答案
您所做的不是解决方法!这就是你应该如何做的
string fullName = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
ModelState modelState;
if (helper.ViewData.ModelState.TryGetValue(fullName, out modelState))
{
if (modelState.Errors.Count > 0)
{
builder.AddCssClass(HtmlHelper.ValidationInputCssClassName);
}
}
GetUnobtrusiveValidationAttributes
的目的是返回非侵入式验证工作的属性。这些属性以名称“data-val”开头,由 jquery.validate.unobtrusive.js
<input data-val="true" data-val-required="Please supply the title." id="Title" name="Title" type="time">
您的自定义助手必须同时拥有这两者才能正常工作。
作为引用,请阅读 InputExtensions 的源代码 here
但是等等!
HTML5时间输入其实是MVC原生支持的!您不需要自己编写。
public class TestModel
{
[DataType(DataType.Time)]
public DateTime MyTime { get; set; }
}
@Html.EditorFor(model => model.MyTime)
关于c# - 输入验证错误类未添加到自定义 HtmlHelper 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623259/
我有意见 ViewUserControl 在哪里 SearchViewData: CommonViewData 在这个 View 中,我因此引用了 Html。 这是类型 HtmlHelper 我创建了
为什么需要使用 HtmlHelper 助手的参数声明 HtmlHelpers? IE public static string ScheduleEntries(this HtmlHelper help
我正在为 ASP.NET MVC 编写自己的 HtmlHelper 扩展: public static string CreateDialogLink (this HtmlHelper htmlHel
我已经为 HtmlHelper 编写了扩展方法,该方法是从需要访问 ViewBag 以获取页面设置的信息的母版页调用的。 这是方法签名: public static string BuildFavor
我正在尝试在 ASP.NET MVC RC2 中构建一个 HtmlHelper 扩展。这段代码在预览版 5 中运行良好,但在 RC2 中不再起作用,我试图理解为什么。这是代码: public stat
我在我的 mvc asp.net 项目中使用 DevExpress 控件。这是 View 的代码: @Html.DevExpress().TextBox(settings => {
我正在尝试使用 Razor 的一些功能创建一个网站,但不使用 Visual Studio。主要原因是我目前主要在 Mac 上工作,我想使用 Coda 来编辑页面。 我不需要一个可编程的网站,就数据库访
在helper中访问模型是正确还是错误?在 cakephp 应用程序中。 我们如何在自定义助手中访问 htmlhelper? 谢谢 最佳答案 Link to manual. . class LinkH
我有一个 html 帮助程序,可以以友好的方式显示文本框的电话号码。用法: Html.PhoneNumberFor(m => m.PhoneNumber) 我希望它接受像“1111111111”这样的
在键入“this”类型后,我已经习惯了由 intellisense 提供的扩展方法。但是当我尝试使用 HtmlHelper 时,扩展方法不显示 - 即使存在“using”语句。为什么是这样?澄清一下,
我正在使用 CakePHP 并试图了解使我的应用程序保持一致和逻辑的最佳方法。 现在我正在尝试使用模型数据验证并处理 View 中的验证错误,我不确定如果我想插入应该怎么做返回错误中的某些链接,例如忘
我有一个 HTMLHelper 扩展方法,可将 HTML 输出到 Response.Write。如何最好地对其进行单元测试? 我正在考虑模拟传递到该方法中的 HtmlHelper,但不确定应该如何验证
在 Razor 代码中使用 HtmlHelpers 时,像这样: new { data-something_something = "value" } 下划线“神奇地”转换为连字符。但是,如果我需要我
我想延长 HtmlHelper , 为了呈现具有自定义属性的脚本标签('async',例如) 我想这样使用它 @Html.RenderBundleScript("/mybundleName", new
我正在尝试创建一个 HTML 帮助程序扩展,它除了生成 HTML 标记外还生成一些 javascript: // script to populate select with data v
我想为我的 MVC Controller 嵌套一组扩展方法,我希望能够按以下模式调用 @Html.NestedName().CustomLabelFor(m => m.Field) 我注意到 Twit
我目前正在创建一些自定义帮助程序类,类似于 ASP.NET MVC 的标准 HtmlHelper。当我查看 HtmlHelper 的实现时,我注意到大多数/所有 HTML 生成方法(例如 Action
好的,假设我有以下模型: public class bar{ public string bar {get; set; } } public class foo{ public bar
我想根据下拉列表的值创建一个 htmlhelpers 元素。这是代码: 下拉菜单 Pracownik biurowy Przewodnik 脚本如下:
是否有人可以建议是否可以在新的自定义 Html 帮助器中重新使用现有的 HtmlHelper。例如: public static class GridHelper { public stati
我是一名优秀的程序员,十分优秀!