Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Html.AccessibleValidationMessageFor(m => m.DeliveryMethod)
- @foreach (var deliveryMethod in Model.GetDeliveryMethodsOrdered())
- {
- @Html.AccessibleRadioButtonFor(m => m.DeliveryMethod, deliveryMethod.Id, new { id = string.Format("DeliveryMethod_{0}", deliveryMethod.Id) })
- <label for="DeliveryMethod_@deliveryMethod.Id">@deliveryMethod.Description</label>
- }
- public static IHtmlString AccessibleRadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object values, object htmlAttributes = null)
- {
- ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
- var fieldName = ExpressionHelper.GetExpressionText(expression);
- var fullBindingName = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(fieldName);
- var validationAttributes = html.GetUnobtrusiveValidationAttributes(fullBindingName, metadata);
- if (!html.ViewData.ModelState.IsValidField(fullBindingName))
- {
- if (!validationAttributes.ContainsKey("aria-describedby"))
- {
- validationAttributes.Add("aria-describedby", fullBindingName.ToLower() + "-valMsg");
- validationAttributes.Add("aria-invalid", "true");
- }
- }
- RouteValueDictionary routeValues = new RouteValueDictionary(htmlAttributes);
- if (routeValues != null)
- {
- foreach (var attribute in validationAttributes)
- {
- routeValues.Add(attribute.Key, attribute.Value);
- }
- return html.RadioButtonFor(expression, values, routeValues);
- }
- return html.RadioButtonFor(expression, values, validationAttributes);
- }
- [Required]
- [Display(Name = "Delivery Method")]
- public int? DeliveryMethod { get; set; }
- <input aria-describedby="deliverymethod-valMsg" aria-invalid="true"
- class="input-validation-error" data-val="true" data-val-number="The field Delivery Method must be a number."
- data-val-required="The Delivery Method field is required." id="DeliveryMethod_-1"
- name="DeliveryMethod" type="radio" value="-1">
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement