1

я создал свою собственную пользовательскую модель связующий для обработки раздела DropDownList, определенный на моем взгляде, как:Пользовательские модели Binder для DropDownList не Выбор Правильного значения

Html.DropDownListFor(m => m.Category.Section, new SelectList(Model.Sections, "SectionID", "SectionName"), "-- Please Select --") 

А вот моя модель Связующее:

public class SectionModelBinder : DefaultModelBinder 
{ 
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 

     if (bindingContext.ModelType.IsAssignableFrom(typeof(Section)) && value != null) 
     { 
      if (Utilities.IsInteger(value.AttemptedValue)) 
       return Section.GetById(Convert.ToInt32(value.AttemptedValue)); 
      else if (value.AttemptedValue == "") 
       return null; 
     } 

     return base.BindModel(controllerContext, bindingContext); 
    } 
} 

Теперь в моем контроллере я могу сказать:

[HttpPost] 
public ActionResult Create(FormCollection collection) 
{ 
    var category = new Category(); 

    if (!TryUpdateModel(category, "Category") 
     return View(new CategoryForm(category, _sectionRepository().GetAll())); 

    ... 
} 

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

Буду признателен, если кто-нибудь покажет мне, как это сделать. Благодаря

ответ

0

Проблема решена, говоря:

Html.DropDownListFor(m => m.Category.Section, new SelectList(Model.Sections.Select(s => new { Text = s.SectionName, Value = s.SectionID.ToString() }), "Value", "Text"), "-- Please Select --") 

Проблема, кажется, решить вокруг SectionID является целым числом. Когда вы конвертируете его в строку, все работает нормально. Надеюсь это поможет.

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

  • Нет связанных вопросов^_^