从下拉列表中检索所有选定的Id的值

时间:2015-08-24 18:06:04

标签: c# asp.net-mvc razor

我有一个名为InvestigatorGroupData的实体,其中包含以下内容:

[DataContract]
public class InvestigatorGroupData
{

        [DataMember]
        public int InvestigatorGroupId { get; set; }

        [DataMember]
        public string InvestigatorGroupName { get; set; }

        [DataMember]
        public bool HasGameAssignment { get; set; }

}

我创建了以下视图模型:

public class InvestigatorGroupModel
{
    public IEnumerable<InvestigatorGroupData> groupList {get;set;}
    public int SelectedInvestigatorGroupId { get; set; }

}

并将其传递给视图如下:

InvestigatorGroupModel groupModel = new InvestigatorGroupModel();

GameClient proxy = new GameClient();
groupModel.groupList = proxy.GetInvestigatorGroups(User.Identity.GetUserId());
proxy.Close();

return View("SelectGroup", groupModel);

我的观点的下拉列表如下所示:
@Html.DropDownListFor(m => m.SelectedInvestigatorGroupId,new SelectList(Model.groupList, "InvestigatorGroupId", "InvestigatorGroupName"))

我希望用户能够选择InvestigatorGroupName,并且要返回关联的InvestigatorGroupData(不仅仅是选定的ID)。截至目前,仅返回/发布SelectedInvestigatorGroupId并且groupList为空

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

简单地说,使用DropDownListFor是不可能的...... DropDownListFor的参数1是模型中的字段,其中选择列表的value属性绑定到。

如果要在帖子上获得对整个对象实体的引用,则需要根据视图返回的ID执行数据库查找。

答案 1 :(得分:1)

使用您的示例:

InvestigatorGroupModel groupModel = new InvestigatorGroupModel();

GameClient proxy = new GameClient();
groupModel.groupList = proxy.GetInvestigatorGroups(User.Identity.GetUserId());
proxy.Close();

//Save the list of InvestigatorGroupData objects to be retrieved later
HttpContext.Current.Session["GroupList"] = groupModel.groupList;

return View("SelectGroup", groupModel);

然后在你的帖子控制器动作中:

//Grab the list of InvestigatorGroupData objects that was saved before
IEnumerable<InvestigatorGroupData> groupList = (IEnumerable<InvestigatorGroupData>)HttpContext.Current.Session["GroupList"];

int investigatorGroupId = groupModel.SelectedInvestigatorGroupId;

InvestigatorGroupData selectedGroup = groupList.Single(l => l.investigatorGroupId == investigatorGroupId);

selectedGroup将是InvestigatorGroupData对象,与下拉列表中的所选条目相对应。