2014-12-19 5 views
0

У меня есть страница, список которых все страны в табличной форме и вид имеет модель, как показано ниже:
Клиент не работает на Bootstrap модальный на MVC View

@model IEnumerable<Country> 

На той же странице, у меня есть ссылка что позволяет пользователю создать новую страну с помощью модального всплывающего окна (определяется в пределах этой страницы)

<a operation="add" id="btnNewCountry" data-toggle="modal" data-target="#myModal" href="#">Add New Country</a> 

Модель всплывающее фрагмент выглядит, как показано ниже:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-hidden="true"> 
@using (Html.BeginForm("ManageCountry", "Admin", FormMethod.Post, new { enctype ="multipart/form-data" })) 
{ 
<label for="module-text">Country Name</label> 
<input type="text" id="txtName" name="name" /> 

<button type="submit" class="btn btn-primary">Save changes</button> 
} 

Как только пользователь нажимает кнопку отправки, элемент управления быстро достигает действия контроллера.

Теперь задача состоит в том, я не в состоянии понять, как применить на стороне клиента проверки на COUNTRYNAME текстовое поле (что-то вроде @ Html.ValidationMessagefor и Требуется) на всплывающий «Добавить Страна» в качестве модальная страница (которая является IEnumerable) отличается от Modal Popup (которая работает только на одном объекте Country)

Пожалуйста, помогите!

+1

Почему у вас есть '

+0

Спасибо, Стивен. .. Я скоро вернусь к этому с результатами – CuriousBuddy

+0

Спасибо, тон, Абсолютное решение ... Не знаю, как я не могу мыслить в этом направлении. – CuriousBuddy

ответ

0

Прежде всего, вы должны убедиться, что вы включили в рамки проверки на стороне клиента к вашим пучках:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js", 
        "~/Scripts/jquery.validate.js", 
        "~/Scripts/jquery.validate.unobtrusive.js",")); 

Затем вы можете использовать кнопку [обязательно] аннотацию на вашу собственность, как это:

[Required] 
public string CountryName {get; set;} 

И теперь вы можете использовать:

@Html.ValidationMessageFor(x => x.Model.CountryName) 

показать ошибку мне ssage в представлении.

EDIT:

Если браузер поддерживает HTML5, вы можете просто использовать 'требуется = ""', как это:

<input type="text" name="CountryName" required=""> 

EDIT:

Основываясь на ваш комментарий, я бы рекомендуем использовать ViewModels. Самый простой подход, который не требует отображений, чтобы сделать ViewModel как это:

[Required] 
public List<Country> Countires { get; set; } 

И в контроллере, вы можете связать свои данные в ViewModel Как это:

//This is the call, that returns an IEnumerable 
var countries = _repository.GetCountries().ToList(); 

var viewModel = new ViewModel(){ 
    Countries = countries, 
} 

Таким образом, вы дон Не работайте с запросом EF непосредственно в представлении.

+0

Если это не работает - можете ли вы проверить свой браузер консоль, чтобы увидеть, есть ли ошибки скрипта на странице? – MichaelCleverly

+0

Я знаю вышеприведенный подход, проблема заключается в том, что модель на моей странице IEnumerable , поэтому я не могу связать имя CountryName – CuriousBuddy

+0

Отредактировал свой ответ. – MichaelCleverly

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