2014-11-27 8 views
0

Я пытаюсь создать множественный выбор из одного раскрывающегося меню выбора. моя модель изначально была:множественный список выбора C# mvc

public int country_id { get; set; } 

и мое мнение было:

@Html.DropDownList("country_id", String.Empty) 

изменить его выбора нескольких я изменил мою модель на:

public List<Country> country_id { get; set; } 

и мой взгляд на:

@Html.ListBoxFor(model => model.country_id, ViewBag.ActionsList as MultiSelectList, new { @class = "multiselect", @style = "width: 450px;height:200px" }) 

проблемы я имею обновляю свой Databse с помощью миграции, так как я меняюсь int к list, однако, он продолжает говорить

«Невозможно удалить индекс„dbo.People.IX_country_id“, потому что она делает не существует, или у вас нет разрешения ».

У меня есть разрешение, поэтому я не уверен, что у меня что-то не хватает?

Мой список стран идет прямо из базы данных страны.

спасибо за ваши входы.

+0

Что вопрос о? Проблема с индексом или представлением? – Pleun

+0

проблема в том, что я переношу базы данных для обновления из int в список, это не обновление. поэтому модель не обновляется. – NULL

ответ

1

Вам необходимо заполнить SelectList в контроллере & передать его мнению, что-то вроде этого:

var countries = from d in db.Countries 
         select new 
         { 
          Id = d.Id, 
          Name = d.Name 
         }; 
// I'd pass this in a model, but use ViewBag if that's what you're familiar with 
ViewBag.ActionsList = new SelectList(countries , "Id", "Name"); 

И в представлении:

@Html.DropDownListFor(model => model.country_id, ViewBag.ActionsList) 

UPDATE:

Вы должны использовать ViewModel для этого:

public class CountryList 
{ 
    // this may have to be a List<SelectListItems> to work with MultiSelectList - check. 
    public SelectList Countries{ get; set; } 
    public List<int> SelectedCountryIds { get; set; } 
} 

В контроллере:

var model = new CountryList 
{ 
    SelectList = //assign the selectlist created earlier 
} 
return View(model); 

В Вид:

@Html.ListBoxFor(m => m.SelectedCountryIds, new MultiSelectList(@Model.Countries, "Id", "Name", @Model.SelectedCountryIds)) 
+0

проблема заключается в том, когда я переношу базы данных для обновления из int в список, это не обновление. поэтому модель не обновляется. – NULL

+0

Не обновляйте его в списке, который не будет работать. Он должен оставаться как «int». – markpsmith

+0

интересно, спасибо, что была проблема. – NULL

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