簡體   English   中英

使用ViewData將數據從控制器傳遞到視圖

[英]Passing data from controler to view using viewdata

我有一個控制器和一個視圖,我想填充一個下拉列表。

我的控制器如下所示:

namespace AAA.Controllers
{
    public class BBBController: Controller
    {
        [HttpPost]
        public ActionResult Sort_Order()
        {
            List<SelectListItem> liSort = new List<SelectListItem>();
            liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
            liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
            liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });

            ViewData["ddSort"] = liSort;
            return View();
        }
    }
}

我的視圖如下所示:

@model IEnumerable<AAA.Models.xyz>

@{
    ViewBag.Title = "List";
}

<br />
<h2>List</h2>

<table class="table">
    <tr>
        <th>
            Sort order
        </th>
    </tr>
    <tr>
        <td>
            @using (Html.BeginForm("Sort_Order", "BBB", FormMethod.Post))
            {
               @Html.DropDownList("Sort", ViewData["ddSort"] as IEnumerable<SelectListItem>, new { @class = "form-control", @style = "width:200px; height:30px" })
            }
        </td>
            </tr>
</table>

運行此命令時出現錯誤:

沒有類型為“ IEnumerable <SelectListItem>”的ViewData項目具有鍵“ Sort”。*

有人可以幫助我,告訴我我做錯了什么嗎?

您需要在GET方法中初始化ViewData["ddSort"] 然后,您可以在視圖中使用它。

    [HttpGet]
    public ActionResult Sort_Order()
    {
        List<SelectListItem> liSort = new List<SelectListItem>();
        liSort.Add(new SelectListItem() { Text = "--Select--", Value = "0", Selected = true });
        liSort.Add(new SelectListItem() { Text = "ASC", Value = "1" });
        liSort.Add(new SelectListItem() { Text = "DESC", Value = "2" });

        ViewData["ddSort"] = liSort;
        return View();
    }

暫無
暫無

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

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