2014-01-13 6 views
0

Я пытаюсь присвоить идентификатор пробелу, где динамическое отображение сообщения проверки. Я делаю что-то неправильно?Присвоение идентификатора сообщению проверки

<div>@Html.ValidationMessageFor(model => model.Title,new{id="prjTitle"})</div> 

Он бросает тип Аргумент не может быть назначен на строковый параметр

ответ

1

Там нет перегрузки, которая принимает только выражение Linq и HTML атрибуты объекта.

По MSDN возникает перегрузка, которая принимает выражение Linq, ErrorMessage (строка) и HTML атрибуты объекта, например:

@Html.ValidationMessageFor(model => model.Title,"entry invalid",new{id="prjTitle"}) 
+0

Он получает идентификатор родительского диапазона, а не к ошибкам промежуток сообщения, если я попробую таким образом. Ниже приведен html после добавления идентификатора, как указано выше. Введите название проекта Kurkula

+1

Я думаю, все, что осталось, это написать пользовательскую функцию validationmessagefor, как описано здесь: http://stackoverflow.com/a/8381685/1783240 – Stephen

1
public static MvcHtmlString IDValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string id) 
    { 
     var validationString = Regex.Replace(htmlHelper.ValidationMessageFor(expression).ToString(), @"^data-valmsg-for=""*\""$", String.Format("data-valmsg-for=\"{0}\"", id)); 

     return MvcHtmlString.Create(validationString); 
    } 
+1

Добро пожаловать в StackOverflow. Не могли бы вы предоставить дополнительную информацию о том, как этот код отвечает на вопрос? – slfan

Смежные вопросы