亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過控制器操作填充下拉列表

通過控制器操作填充下拉列表

C#
Qyouu 2023-07-22 16:03:53
我必須dropdown list從 a填充 a List<string>,其中鍵等于顯示的值。我來提取這些值,我做了各種測試來連接View但沒有成功。給出提取值的代碼:public async Task<IActionResult> PopulateDropDownList(){    try    {        var items = await DocumentDBRepository<CosmosDBTelemetry>.GetDeviceIds();        List<string> deviceids = new List<string>();        foreach(var item in items)        {            deviceids.Add(item.deviceId);        }        return View();      }      catch (Exception e)      {        throw (e);     }}剩下的事有人能幫我嗎?
查看完整描述

2 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

在模型-視圖-控制器 (MVC) 框架中,控制器的工作是將模型傳遞給視圖。假設您的字符串列表items已正確填充,控制器需要將其傳遞給視圖。

首先,您需要區分操作和輔助方法。操作是控制器類中的公共方法。用戶可以通過 URL 訪問操作,因此在您的情況下,http://application_name/controller_name/PopulateDropDownList將是有效的 URL,盡管這對用戶來說毫無意義。相反,您需要創建PopulateDropDownList一個輔助方法,如下所示:

private async Task<IEnumerable<string>> GetDropdownOptionsList()

{

? List<string> items = ...;

? return items;

}

然后,從 URL 操作調用幫助程序,例如


public async Task<IActionResult> View()

{

? List<string> items = await GetDropdownListOptions();

? return View(items);

}

您可能希望查看此文檔以獲取有關控制器操作的信息。


其次,該View()方法構造視圖并將其發送給用戶,但默認情況下,它不傳遞任何數據。View(items)您可以通過調用而不是將字符串列表傳遞到視圖View()。然后,您的視圖將如下所示:


@model IEnumerable<string>


<select>

? @foreach (string item in Model)

? {

? ? <option value="@item">@item</option>

? }

</select>

該@model IEnumerable<string>指令指定視圖需要將字符串列表傳遞到視圖中。迭代@foreach (string item in Model)列表中的每個字符串并option為每個字符串生成一個元素。


如果需要將多個數據模型傳遞到視圖中,可以使用ViewBag或ViewData對象。只需像這樣添加ViewBag.Items = items;到您的方法中:PopulateDropDownList


private async void PopulateDropDownList()

{

? List<string> items = ...;

? ViewBag.Items = items;

}

那么你的視圖將如下所示:


<select>

? @foreach (string item in (IEnumerable<string>)ViewBag.Items)

? {

? ? <option value="@item">@item</option>

? }

</select>


查看完整回答
反對 回復 2023-07-22
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

你有兩個選擇。


選項1


從控制器檢索數據并從剃刀頁面訪問它。


MyController.cs


public async Task<IActionResult> PopulateDropDownList()

{

    var items = await 

                DocumentDBRepository<CosmosDBTelemetry>.GetDeviceIds();

                List<string> deviceids = new List<string>();

    foreach(var item in items)

    {

     deviceids.Add(item.deviceId);

    }

    ViewData["deviceids"] = deviceids;


    return View();

}

MyViewPage.cshtml


<select>

        <option value="">Select an option</option>

      @foreach (string deviceid in ((List<string>)ViewData["deviceids"]))

      {

        <option value="@deviceid">@deviceid</option>

      }

    </select> 

選項2


直接從 razor 頁面檢索和訪問數據。


MyViewPage.cshtml


@Code

    var items =  DocumentDBRepository<CosmosDBTelemetry>.GetDeviceIds();

    List<string> deviceids = new List<string>();

    foreach(var item in items)

     {

     deviceids.Add(item.deviceId);

     }

End Code


<select>

    <option value="">Select an option</option>

  @foreach (string deviceid in deviceids)

  {

    <option value="@deviceid">@deviceid</option>

  }

</select> 


查看完整回答
反對 回復 2023-07-22
  • 2 回答
  • 0 關注
  • 169 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號