在编辑期间,不会将当前值显示为下拉列表中的可用项列表

时间:2013-08-05 12:14:10

标签: asp.net-mvc asp.net-mvc-4 http-get html.dropdownlistfor

修改时的当前情况

我有一个编辑表单,允许用户更改硬件(模块)的所有权(提供给新客户)。 我所做的是,通过一个功能收集了所有可用的客户。此列表显示在下拉列表中,该下拉列表还包含硬件的当前所有者(客户)。

我想要实现的是在下拉列表中,我只想删除当前所有者(也是客户之一)。

这是代码视图

视图模型

public class ChangeOwnership
{
    public ChangeOwnership()
    {
    }

    public Guid CurrentOwnerId { get; set; }

    public string CurrentOwner { get; set; }

    public string SelectedNewOwner { get; set; }

    public IEnumerable<SelectListItem> OwnerNames { get; set; }  
}

在控制器中获取方法

[HttpGet]
    public ActionResult ChangeModuleOwnership(long id)
    {
        var owners = _ownedModuleRepository.GetAllBusinessUnits();//businessunits = customers
        var model = new ChangeOwnership
            {
                CurrentOwnerId = _ownedModuleRepository.GetOwnedModuleOwnerId(id),
                CurrentOwner = _ownedModuleRepository.GetSelectedModuleOnwerName(id),
                OwnerNames = owners.Select(m=> new SelectListItem
                    {
                        Value = m.Id.ToString(),
                        Text = m.Name
                    })
            };

        return View(model);
    }

存储库功能

List<BusinessUnit> IOwnedModuleRepository.GetAllBusinessUnits()
    {
        return _dbSis.BusinessUnits.ToList();
    }

我需要做什么才能从下拉列表中筛选出当前所有者,以便我只能展示潜在的新所有者(客户)?

1 个答案:

答案 0 :(得分:1)

为什么你不在控制器中做这样的事情:

OwnerNames = owners
    .Where(o => o.OwnerID != id) //Filter out the current owner here
    .Select(m=> new SelectListItem
                    {
                        Value = m.Id.ToString(),
                        Text = m.Name
                    })