2014-09-18 4 views
0

У меня есть вид модели с аннотацией данных атрибутовданных и ввод [файл]

public class vm{ 
[Required(AllowEmptyStrings=false,ErrorMessage="message 1")] 
     public string Name { set; get; } 

     [RegularExpression("([0-9]+)", ErrorMessage = "message 2")] 
     public int Period { set; get; } 

[Required(ErrorMessage = "message 3")] 
     [RegularExpression(@"^(\.xls|\.xlsx)$", 
      ErrorMessage = "message 3")] 
     public string Extension { set; get; } 
} 

Период поле ограниченно для выпадающего списка и с этим полем сборки в проверке клиента работает нормально.

@Html.DropDownListFor(x => x.Period, Model.Periods, new { @class = "form-control", name = "period" }) 

Я могу получить сообщение об ошибке через ValidationSummary или ValidationMessageFor.

Теперь проблема с полями расширения и имени. Они заполняются моим пользовательским связующим из поданного файла.

<input type="file" name="file" /> 

Как можно вручную связать эти два поля в файле тега ввода, JQuery unobstrusive проверки клиент может работать?

UPDATE

Только сейчас я нашел, как произвести вход [файл] с встроенным помощником по:

@Html.TextBoxFor(x => x.Extension, new { type = "file" }) 

Но теперь проблема в том, как я могу связать второй поле к нему тоже? Я просто хочу, чтобы один вход связан с двумя полями в модели. Как я могу это сделать? Это не кажется, работает даже со скрытым полем:

@Html.HiddenFor(x=>x.Name) 
+0

Если вы не вносите входы для 'Name' и' Extension', вы не можете ассоциировать 'ValidationMessageFor' с ними. –

ответ

0

Я думаю, что я получил его. Решение для использования скрытых полей, но плагин проверки должен быть настроен так, чтобы не игнорировать их.

@Html.HiddenFor(x=>x.Name) 

и в сценарии

$('form').validate().settings.ignore = []; 

Если есть лучший способ сделать это, я хотел бы видеть его.

+0

Вы используете правильную настройку для 'ignore', чтобы она ничего не игнорировала. – Sparky

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