Реализация Dropdownlist на Asp.net MVC 3 из viewModel - PullRequest
0 голосов
/ 19 августа 2011

Я новичок в платформе .net и mvc, у меня так много полей int, в которых хранятся некоторые значения выпадающего списка, я создал поля типа int из-за размера базы данных, поэтому я реализую раскрывающийся список с помощью этого метода, но он работает, но я не знаю, является ли это правильным решением для хранения текста значений на viewmodel, вот пример кода:

Мне очень жаль моего английского, пожалуйста, дайте мне знать, если вы ничего не понимаете.

модель property.cs

    [Required(ErrorMessage = "Bu alan gereklidir!")]
    [Display(Name = "Şehir"), MaxLength(60)]
    public int City { get; set; }

propertymgmtviewModel

 public Property Property { get; set; }
    public IEnumerable<Property> Properties { get; set; }
    public IEnumerable<SelectListItem> Cities
    {
        get
        {
            return new[]
            {
            new SelectListItem { Text="--Select One---", Value = "", Selected=true},
            new SelectListItem { Text="Chicago", Value = "1"},
            new SelectListItem { Text="New York", Value = "2"},
            new SelectListItem { Text="Zimbabwe", Value = "3"},
            };
        }

просмотр для редактирования просмотра страницы:

 @Html.DropDownListFor(model => model.Property.City,
        new SelectList(Model.Cities,"Value","Text"))

Просмотр значений страницы:

   <td>
   @(item.City != null ?
   Model.Cities.SingleOrDefault(c => c.Value == item.City.ToString()).Text
   : "")

        </td>

Ответы [ 2 ]

5 голосов
/ 19 августа 2011

Если бы я был вами, я бы использовал словарь ключ / displayName, как это для SelectList:

один статический элемент (как статический ...):

static Dictionary<int, string> CitiesDict = new Dictionary<int, string>()
    {
        { -1 , "--Select One---"},
        { 0 ,"Chicago"},
        { 1 ,"New York"},
        { 2 ,"Zimbabwe"},
    };

Одно свойство для выпадающего списка:

public SelectList Cities { get; set; }

Инициализируется в конструкторе следующим образом:

Cities = new SelectList(CitiesDict , "Key", "Value", -1);

Затем в представлении для редактирования:

@Html.DropDownListFor(model => model.Property.City, Model.Cities) 

И для отображения:

@(CitiesDict.ContainsKey(Model.City) ? CitiesDict[Model.City] : "")
0 голосов
/ 19 августа 2011

Я еще не использовал синтаксис Razor (все еще на MVC2), но я считаю, что эта часть неверна:

@Html.DropDownListFor(model => model.Property.City,
        new SelectList(Model.Cities,"Value","Text"))

Вам нужно сообщить механизму представления, какие значения нужно заполнить списком select (атрибут value и текст, связанный с элементом option), но я не знаю правильный синтаксис MVC3, чтобы помочь вам почини это. Надеюсь, кто-то еще может ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...