Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# MVC如何设置DropDownList后面的模型值_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# MVC如何设置DropDownList后面的模型值

C# MVC如何设置DropDownList后面的模型值,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个DropDownList,它不能作为DropDownListFor使用,所以它被放弃了 如何将DropDownList附加为视图中项目的模型值。这是我的密码 @model DirectoryMVC.Models.get_administrators_Result @{ List<SelectListItem> listItems2 = new List<SelectListItem>(); listItems2.Add(new SelectL

我有一个
DropDownList
,它不能作为
DropDownListFor
使用,所以它被放弃了

如何将DropDownList附加为视图中项目的模型值。这是我的密码

@model  DirectoryMVC.Models.get_administrators_Result

@{ 
    List<SelectListItem> listItems2 = new List<SelectListItem>();
    listItems2.Add(new SelectListItem { Text = "Mr.", Value = "Mr." });
    listItems2.Add(new SelectListItem { Text = "Ms.", Value = "Ms." });
    listItems2.Add(new SelectListItem { Text = "Dr.", Value = "Dr." });
    listItems2.Add(new SelectListItem { Text = "Miss", Value = "Miss" });
    listItems2.Add(new SelectListItem { Text = "Mrs.", Value = "Mrs." });
    listItems2.Add(new SelectListItem { Text = "Rev.", Value = "Rev." });

    foreach (SelectListItem li2 in listItems2)
    {
        if (li2.Value == this.Model.title)
        {
            li2.Selected = true;
        }
    }

    ViewBag.Titles = listItems2;

    List<SelectListItem> admins = ViewBag.JobTitle;
    foreach (SelectListItem item in admins)
    {
        if (this.Model.admin_code.TrimEnd(' ') == item.Value)
        {
            item.Selected = true;
        }
        else
        {
            item.Selected = false;
        }
    }
    ViewBag.JobTitle = admins;
}
        @Html.HiddenFor(m=>m.admin_id)

        <div class="col-md-1">@Html.DropDownList("Titles")

        </div>
        <div class="col-md-2"> @Html.TextBoxFor(m => m.first_name)
        </div>
        <div class="col-md-2"> @Html.TextBoxFor(m => m.last_name)
        </div>
        <div class="col-md-3"> @Html.DropDownList("JobTitle")
        </div>
        <div class="col-md-3 pull-left"> @Html.TextBoxFor(m => m.email)
        </div>
@model DirectoryMVC.Models.get\u administrators\u结果
@{ 
List listItems2=新列表();
添加(新建SelectListItem{Text=“Mr.”,Value=“Mr.”});
添加(新建SelectListItem{Text=“Ms.”,Value=“Ms.”});
添加(新建SelectListItem{Text=“Dr.”,Value=“Dr.”});
添加(新建SelectListItem{Text=“Miss”,Value=“Miss”});
添加(新建SelectListItem{Text=“Mrs.”,Value=“Mrs.”});
添加(新建SelectListItem{Text=“Rev.”,Value=“Rev.”);
foreach(在listItems2中选择ListItem li2)
{
if(li2.Value==this.Model.title)
{
li2.所选=真;
}
}
ViewBag.Titles=listItems2;
列表管理员=ViewBag.JobTitle;
foreach(在管理员中选择ListItem项)
{
if(this.Model.admin_code.TrimEnd(“”)=item.Value)
{
item.Selected=true;
}
其他的
{
item.Selected=false;
}
}
ViewBag.JobTitle=管理员;
}
@Html.HiddenFor(m=>m.admin\u id)
@Html.DropDownList(“标题”)
@Html.TextBoxFor(m=>m.first_name)
@Html.TextBoxFor(m=>m.last_name)
@Html.DropDownList(“JobTitle”)
@Html.TextBoxFor(m=>m.email)

在控制器中,输入管理员代码和管理员标题。这两个下拉列表为空。查看页面时正确选择了这些值,但它们没有正确映射到表单post上的模型。

如果这仍然是您正在使用的模型:

public partial class get_administrators_Result
{
    public int admin_id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string title { get; set; }
    public string email { get; set; }
}
然后您只需将
@Html.DropDownList(“Titles”)
更改为
@Html.DropDownList(“Title”)
。要使模型绑定工作,表单元素需要与模型属性具有相同的名称


顺便说一句,你真的应该使用
DropDownListFor
——我知道第一次它对你不太管用,但我强烈建议你重新使用它。

为什么在使用
@Html.DropDownListFor
时它不管用?如果要将
标题
下拉列表绑定到模型属性,则无需自行设置该下拉列表的选定值,这样就可以避免使用
foreach(listItems2中的SelectListItem li2)
。使用
@Html.DropDownList(“title”,ViewBag.Titles)
实现这一点。可能会对您有所帮助。您没有向
Html.DropDownList
函数提供任何值。。因此,我根本不确定您是如何在呈现的页面中看到任何值的。@granit您可以在这里看到我前面的问题。我一起放弃了它@granit使用
@Html.DropDownList(“title”,ViewBag.Titles)
不起作用<代码>“title”是模型属性,
“Titles”
是视图包。尝试代码时收到的错误为
“具有键'title'的ViewData项的类型为'System.String',但必须为'IEnumerable'
@SamAxe您可以看到我在列表中循环,如果它与属性值和SelectListItem值匹配,则将所选值设置为true。这也需要更改:
ViewBag.Titles=listItems2
ViewBag.Title=listItems2
属性也必须是
Title
,对吗?很好。虽然,就个人而言,我更喜欢指定DropDownList for使用的IEnumerable,而不是依赖类似名称的ViewBag项目-这些神奇的关系在我看来太易变了。@sleeyuen我发现这些东西可能非常易变。DropDownListFor是一场噩梦,这个解决方案奏效了。