C# 如何从Asp.net MVC中的ListBoxFor选择框返回空列表而不是空列表?

C# 如何从Asp.net MVC中的ListBoxFor选择框返回空列表而不是空列表?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,html.dropdownlistfor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Html.dropdownlistfor,控制器获取操作 IList<InputVoltage> inputVoltagesList = unitOfWorkPds.InputVoltageRepository.GetAll.ToList(); pdsEditViewModel.InputVoltageList = inputVoltagesList.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() }); 当用户未做出

控制器获取操作

IList<InputVoltage> inputVoltagesList = unitOfWorkPds.InputVoltageRepository.GetAll.ToList();

pdsEditViewModel.InputVoltageList = inputVoltagesList.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() }); 
当用户未做出任何选择时,我希望收到一个空列表selectedInputvoltages以空列表的形式进入我的post controller操作中,我如何让它以空列表的形式进入


我喜欢这两个答案使用一个比另一个有什么好处吗?

如果为空,请确保在控制器(或模型/视图模型)中对其进行初始化,如果为空,则可能(尽管代码很难看)使用coalesce操作符进行动态初始化:

@Html.ListBoxFor(m => m.SelectedInputVoltages, Model.InputVoltageList ?? new List<SelectListItem>())
@Html.ListBoxFor(m=>m.SelectedInputVoltages,Model.InputVoltageList??新建列表())

如果在视图模型的构造函数中初始化列表,则它将始终至少是一个空列表。任何构建视图模型实例的操作都将继续相应地设置列表

public class SomeViewModel
{
    public List<int> SelectedInputVoltages { get; set; }

    public SomeViewModel()
    {
        SelectedInputVoltages = new List<int>();
    }
}
公共类SomeViewModel
{
公共列表SelectedInputVoltages{get;set;}
公共视图模型()
{
SelectedInputVoltages=新列表();
}
}
这样,在
SomeViewModel
的实例中,无论视图、控制器等如何,它都不会为
null


如果始终希望视图模型的属性具有默认值,则最好将其放置在视图模型中。如果将该逻辑放在控制器或视图中,则需要在您想要使用它的任何时候重复该逻辑。

这是一篇较旧的文章,但这是我处理返回空列表的方式

    private List<StockFundamental> GetEmptyList()
    {
        StockFundamental stockFund = new StockFundamental();
        List<StockFundamental> stockFundList = new List<StockFundamental>();
        stockFundList.Add(stockFund);
        return stockFundList;
    }
私有列表GetEmptyList()
{
StockBasic股票基金=新的StockBasic();
List stockFundList=新列表();
股票基金清单。添加(股票基金);
返回股票基金清单;
}
public class SomeViewModel
{
    public List<int> SelectedInputVoltages { get; set; }

    public SomeViewModel()
    {
        SelectedInputVoltages = new List<int>();
    }
}
    private List<StockFundamental> GetEmptyList()
    {
        StockFundamental stockFund = new StockFundamental();
        List<StockFundamental> stockFundList = new List<StockFundamental>();
        stockFundList.Add(stockFund);
        return stockFundList;
    }