Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DropDownListFor中的选定值与in语句绑定_C#_Asp.net Mvc_Razor_Html.dropdownlistfor - Fatal编程技术网

C# 将DropDownListFor中的选定值与in语句绑定

C# 将DropDownListFor中的选定值与in语句绑定,c#,asp.net-mvc,razor,html.dropdownlistfor,C#,Asp.net Mvc,Razor,Html.dropdownlistfor,我有一个视图,允许同时编辑多个地址项。文本框的绑定工作正常,但下拉列表无法识别选定的值 我的ViewModels是: public class AddressesViewModel { public List<AddressViewModel> Addresses { get; set; } } public class AddressViewModel { public string Street { get; set; } public string S

我有一个视图,允许同时编辑多个地址项。文本框的绑定工作正常,但下拉列表无法识别选定的值

我的ViewModels是:

public class AddressesViewModel
{
    public List<AddressViewModel> Addresses { get; set; }
}

public class AddressViewModel
{
    public string Street { get; set; }
    public string StateSelected { get; set; }
    public IEnumerable<SelectListItem> States { get; set; }

    public AddressViewModel()
    {
        this.States = new List<SelectListItem> { 
            new SelectListItem(),
            new SelectListItem { Text = "New Jersey", Value = "NJ"}, 
            new SelectListItem { Text = "New York", Value = "NY"}, 
            new SelectListItem { Text = "Pennsylvania", Value = "PA" },
            new SelectListItem { Text = "Rhode Island", Value = "RI" }
        };
    }
}
公共类地址视图模型
{
公共列表地址{get;set;}
}
公共类AddressViewModel
{
公共字符串Street{get;set;}
公共字符串StateSelected{get;set;}
公共IEnumerable状态{get;set;}
公共地址视图模型()
{
this.States=新列表{
新建SelectListItem(),
新建SelectListItem{Text=“newjersey”,Value=“NJ”},
新建SelectListItem{Text=“new York”,Value=“NY”},
新建SelectListItem{Text=“Pennsylvania”,Value=“PA”},
新建SelectListItem{Text=“罗德岛”,Value=“RI”}
};
}
}
我的控制器操作是:

public ActionResult Index()
{
    var addressesViewModel = new AddressesViewModel();
    addressesViewModel.Addresses = new List<AddressViewModel>() { 
        new AddressViewModel{
            Street = "some road", 
            StateSelected = "PA"
        },
        new AddressViewModel{
            Street = "some other road", 
            StateSelected = "NJ"
        }
   };

   return View(addressesViewModel);
}
public ActionResult Index()
{
var addressesViewModel=新地址视图模型();
addressesViewModel.Addresses=新列表(){
新的AddressViewModel{
Street=“某条路”,
StateSelected=“PA”
},
新的AddressViewModel{
Street=“其他道路”,
StateSelected=“NJ”
}
};
返回视图(AddressViewModel);
}
我的看法是:

@model HelloWorld.Models.AddressesViewModel


@for (int i = 0; i < Model.Addresses.Count(); i++)
{
    <div class="editor-label">
        @Html.LabelFor(modelItem => Model.Addresses[i].Street)
    </div>
    <div class="editor-field">
        @Html.EditorFor(modelItem => Model.Addresses[i].Street)
    </div>

    <div class="editor-label">
        @Html.LabelFor(modelItem => Model.Addresses[i].StateSelected)
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(modelItem => Model.Addresses[i].StateSelected, Model.Addresses[i].States)
    </div>
}
@model HelloWorld.Models.AddressesViewModel
@for(int i=0;iModel.Addresses[i].Street)
@EditorFor(modelItem=>Model.Addresses[i].Street)
@Html.LabelFor(modelItem=>Model.Addresses[i].StateSelected)
@Html.DropDownListFor(modeleItem=>Model.Addresses[i].StateSelected,Model.Addresses[i].States)
}

我用一个项目(绑定到AddressViewModel)测试了视图,它工作得很好。

在注释中链接的帮助下,我最终为我的控制器添加了一个for each:

public ActionResult Index()
{
    var addressesViewModel = new AddressesViewModel();
    addressesViewModel.Addresses = new List<AddressViewModel>() { 
        new AddressViewModel{
            Street = "some road", 
            StateSelected = "PA"
        },
        new AddressViewModel{
            Street = "some other road", 
            StateSelected = "NJ"
        }
   };

        foreach (var item in addressesViewModel.Addresses)
        {
            if (item.StateSelected != null)
            {
                item.States.First(x => x.Value == item.StateSelected).Selected = true;
            }
        }

   return View(addressesViewModel);
}
public ActionResult Index()
{
var addressesViewModel=新地址视图模型();
addressesViewModel.Addresses=新列表(){
新的AddressViewModel{
Street=“某条路”,
StateSelected=“PA”
},
新的AddressViewModel{
Street=“其他道路”,
StateSelected=“NJ”
}
};
foreach(AddressViewModel.Addresses中的var项)
{
如果(item.StateSelected!=null)
{
item.States.First(x=>x.Value==item.StateSelected).Selected=true;
}
}
返回视图(AddressViewModel);
}

发现其他几个问题相同: