2013-09-13 2 views
0

Я изучаю MVC, но я не могу получить валидацию для работы.Как получить подтверждение для работы в mvc

Я прочитал, что я могу делать аннотации в моих моделях, как это:

public class InvoiceNoModel 
{ 
    [Required] 
    [Display(Name = "Invoice Number")] 
    public string InvoiceNo { get; set; } 
} 

Я сделал это, и на мой взгляд, у меня есть это:

@using (Html.BeginForm("GetInvoice","WebPay", FormMethod.Post)) 
{ 
<p class="flat">@Html.ValidationSummary(true) </p> 
<p class="flat"> 
     @Html.LabelFor(m=>m.InvoiceNo) 
     @Html.TextBoxFor(m=>m.InvoiceNo) 
     @Html.ValidationMessageFor(m=>m.InvoiceNo) 
</p> 
<input class="button-1 search-box-button" value="GO" type="submit" /> 

} 

Когда я бегу мое приложение и нажмите GO без ввода каких-либо значений в поле ввода invoiceno, я ожидал, что он сбой с сообщением, отображаемым пользователю ... но это не так, и он улетает прямо в действие ... Я знаю, что я что-то пропустил, но не могу его изобразить вне ... и d книга не сказала :) Спасибо

+0

Имеет ли сгенерированный HTML-код для текстового поля «data-val =» true »и« data-val-required = »Поле« Номер счета-фактуры »обязательно.» «Атрибуты к нему? – Tallmaris

ответ

0

вы должны отсутствовать ссылку на JS файлы, которые отвечают за проверки на стороне клиента ..

+0

Как я имею в виду? Нужно ли включать любые js-файлы? Как я могу это сделать? спасибо – sirbombay

+1

просто перетащите jquery.validate.js и jquery.validate.unbtusive.js в ваш _Layout.cshtml или представление, где вам нужна проверка на стороне клиента .. дайте мне знать, если это сработает .. cheers .. – AthibaN

+0

Обратите внимание, что если вы используете Bundling, вероятно, будет определен пакет '' ~/bundles/jqueryval''. Просто добавьте это в свой макет: '@ Scripts.Render (" ~/bundles/jqueryval ")' – Tallmaris

0

Я получил это работает после заливки через много ответов на SO и пытается их. Оказалось, что сценарии ненавязчивой проверки не были загружены по умолчанию. Я установил ее, добавив в конце _Layout.cshtml

@Scripts.Render("~/bundles/jqueryval")

Конечный результат:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 
@RenderSection("scripts", required: false) 
0

Набор ValidationSummary (ложь) или просто пустым ValidationSummary(), он будет работать, то

 @using (Html.BeginForm("GetInvoice","WebPay", FormMethod.Post)) 
     { 
     <p class="flat">@Html.ValidationSummary(true) </p> 
     <p class="flat"> 
     @Html.LabelFor(m=>m.InvoiceNo) 
     @Html.TextBoxFor(m=>m.InvoiceNo) 
     @Html.ValidationMessageFor(m=>m.InvoiceNo) 
     </p> 
     <input class="button-1 search-box-button" value="GO" type="submit" /> 

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