簡體   English   中英

如何從Asp.net MVC的ListBoxFor選擇框中返回空列表而不是空列表?

[英]How can I return an empty list instead of a null list from a ListBoxFor selection box in Asp.net MVC?

控制器采取行動

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

pdsEditViewModel.InputVoltageList = inputVoltagesList.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() }); 

視圖模型

    public IEnumerable<SelectListItem> InputVoltageList { get; set; }
    public List<int> SelectedInputVoltages { get; set; }

視圖

    @Html.ListBoxFor(m => m.SelectedInputVoltages, Model.InputVoltageList)

當用戶不進行選擇時,我希望收到一個空列表,其中selectedInputvoltages作為空進入我的后控制器操作中,如何將其作為空列表加入?

我喜歡兩個答案,使用一個答案是否有好處?

如果為null,請確保已在控制器(或模型/視圖模型)中對其進行了初始化;如果為null,則可能(盡管是丑陋的代碼)使用了合並運算符即時進行了初始化:

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

如果在視圖模型的構造函數中初始化列表,則它將始終至少是一個空列表。 建立視圖模型實例的任何內容都會繼續相應地設置列表。

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

    public SomeViewModel()
    {
        SelectedInputVoltages = new List<int>();
    }
}

這樣,在SomeViewModel的實例中它永遠不會為null ,無論視圖,控制器等如何。

如果您始終希望視圖模型的屬性具有默認值,則放置該視圖的最佳位置是視圖模型。 如果將該邏輯放置在控制器或視圖中,那么您每次使用它時都需要重復該邏輯。

這是較舊的帖子,但這是我處理返回空列表的方式。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM