Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net mvc mvc c#html.dropdownlist和viewbag_Asp.net Mvc_Html.dropdownlistfor_Viewbag_Html Select - Fatal编程技术网

Asp.net mvc mvc c#html.dropdownlist和viewbag

Asp.net mvc mvc c#html.dropdownlist和viewbag,asp.net-mvc,html.dropdownlistfor,viewbag,html-select,Asp.net Mvc,Html.dropdownlistfor,Viewbag,Html Select,因此,我有以下(伪代码): string selectedvalued=“C”; 列表=新列表(); foreach(mymodelinstance.Codes中的变量项){ 添加(新SelectListItem{Text=item.Name,Value=item.Id.Tostring(),Selected=item.Id.Tostring()==selectedvalue?true:false}); } ViewBag.ListOfCodes=列表; 我认为: <%: Html.Dr

因此,我有以下(伪代码):

string selectedvalued=“C”;
列表=新列表();
foreach(mymodelinstance.Codes中的变量项){
添加(新SelectListItem{Text=item.Name,Value=item.Id.Tostring(),Selected=item.Id.Tostring()==selectedvalue?true:false});
}
ViewBag.ListOfCodes=列表;
我认为:

<%: Html.DropDownList("Codes", (List<SelectListItem>)ViewBag.ListOfCodes , new { style = "max-width: 600px;" })%>

现在,在它到达视图之前,“列表”已经填充了项目,并标记了已经选择的项目。但是当它到达视图时,没有一个选项被标记为选中

我的问题是,是否可以使用viewbag传递项目,或者我应该使用其他介质?因为如果我这样使用它,它会删除选项上的选定标志。

尝试如下:

ViewBag.ListOfCodes = new SelectList(mymodelinstance.Codes, "Id", "Name");
ViewBag.Codes = "C";
    ViewBag.ListOfCodes = new SelectList(new[]
    {
        new { Id = "A", Name = "Code A" },
        new { Id = "B", Name = "Code B" },
        new { Id = "C", Name = "Code C" },
    }, "Id", "Name");
在你看来:

<%= Html.DropDownList(
    "Codes", 
    (IEnumerable<SelectListItem>)ViewBag.ListOfCodes, 
    new { style = "max-width: 600px;" }
) %>

您能否在控制器中设置断点并再次检查
列表
中至少有一项已标记为
Selected=true?我不认为ViewBag会弄乱您的列表。是的,我这样做了,它正在标记正确的选项。这一部分选择了“代码C”?这一部分:ViewBag.Code=“C”。由于在视图中使用了代码作为
DropDownList
helper的第一个参数,因此它将从ViewBag中选择值。显然,如果您使用了视图模型和强类型的
DropDownListFor
helper,并且忘记了我经常向人们推荐的ViewBag,那么事情可能会变得更加清晰一百万倍。我同意,我也会这样做。但是在这个场景中,这个列表中的值将被附加到另一个dropdownlist的另一个值,该值最终将被写入实例中。我希望它能以不同的方式建模..我很惊讶它能起作用。我在想,这个物体是如何得到这个值的?那么,这是否意味着如果ViewBag与对象的“名称”(textbox、radiobutton等)相同,那么它将使用传递的值?或者它只适用于下拉列表??
    ViewBag.ListOfCodes = new SelectList(new[]
    {
        new { Id = "A", Name = "Code A" },
        new { Id = "B", Name = "Code B" },
        new { Id = "C", Name = "Code C" },
    }, "Id", "Name");