0

C# fiddle screenshotMVC C# DropDownListFor имеет значение предыдущего выбора

https://dotnetfiddle.net/MadhI5

Модель:

public class IndexViewModel 
{ 
    public List<SelectListItem> Sel { get; set; } 
    public string Val1 { get; set; } 
    public string Val2 { get; set; } 
    public string Val3 { get; set; } 
    public string Val4 { get; set; } 
    public string Val5 { get; set; } 
} 

Контроллер:

public ActionResult Index() 
{ 
    var vm = new IndexViewModel(); 

    vm.Sel = new List<SelectListItem>(); 
    vm.Sel.Add(new SelectListItem() { Text = "Opt1", Value = "1" }); 
    vm.Sel.Add(new SelectListItem() { Text = "Opt2", Value = "2" }); 
    vm.Sel.Add(new SelectListItem() { Text = "Opt3", Value = "3" }); 

    vm.Val1 = "3"; 
    vm.Val2 = null; 
    vm.Val3 = "1"; 
    vm.Val4 = null; 
    vm.Val5 = "3"; 

    return View(vm); 
} 

Вид:

@model HelloWorldMvcApp.IndexViewModel 
@{ 
    Layout = null; 
} 

@Html.DropDownListFor(m => m.Val1, Model.Sel, "-") 
@Html.DropDownListFor(m => m.Val2, Model.Sel, "-") 
@Html.DropDownListFor(m => m.Val3, Model.Sel, "-") 
@Html.DropDownListFor(m => m.Val4, Model.Sel, "-") 
@Html.DropDownListFor(m => m.Val5, Model.Sel, "-") 

Выбранные значения

  • Val1: 3 (правильный)
  • Val2: 3 (должно быть "-")
  • Val3: 1 (правильный)
  • Val4: 1 (должны be "-")
  • Val5 3 (правильный)

Посмотрите на демонстрацию скрипки. Почему Val2 и Val4 не равны нулю в представлении? Это ошибка структуры?

+0

Я думаю, вы должны использовать '«»' вместо 'null' – Qsprec

+1

You код должен быть в этом вопросе. И это не ошибка, а именно то, как работает код (кэширование 'SelectList'). Вы можете заставить его работать, используя '@ Html.DropDownListFor (m => m.Val2, новый SelectList (Model.Sel," Value "," Text ")," - ")' –

+0

Используйте вместо "null" благодаря – Kraken

ответ

1
... 
vm.Val1 = "3"; 
vm.Val2 = ""; 
vm.Val3 = "1"; 
vm.Val4 = ""; 
vm.Val5 = "3"; 
... 

Использование «» вместо нуль работает

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

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