从MVC 2中的ViewData加载DropDownList

时间:2013-10-21 16:36:56

标签: c# asp.net asp.net-mvc html-select viewdata

我有以下视图。这是我的观点的整个代码

<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" runat="server">
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
</asp:Content>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <div>
        <table>
            <tr>
                <td>
                    <select id="clientDDL">
                    </select>
                    <% Html.DropDownList("clientDDL",
                        new SelectList((IEnumerable)ViewData["Clients"], "Code", "Name")); %>
                </td>
            </tr>
        </table>
    </div>
</asp:Content>

我使用模型中的下一个ViewData:

public static List<lookup> GetClients()
        {
            using (ModelDataContext data = new ModelDataContext(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
            {
                List<lookup> retVal = new List<lookup>();
                List<Client> lClient = data.Clients.Where(a => a.IsActive == true).ToList();
                lClient = lClient.OrderBy(o => o.ClientName).ToList();

                foreach (Client item in lClient)
                {
                    retVal.Add(new lookup() { Code = item.ClientID.ToString(), Name = item.ClientName, });
                }
                return retVal;
            }            
        }

这是我的控制器:

public ActionResult ProcedureFilter()
        {
            ViewData["Clients"] = WorkflowModels.GetClients();
            return View();
        }

我错过了什么?我的DropDownList仍然是空的。也许我要提一些参考?请提出任何建议。

更新: 问题是';'在部分结尾&lt;%=%&gt;。作品代码:

<%= Html.DropDownList("clientDDL",
                            new SelectList((IEnumerable)ViewData["Clients"], "Code", "Name")) %>

2 个答案:

答案 0 :(得分:2)

在您提供的ASP.NET代码中,使用相同的select(cliendDDL)定义了2个HTML id标记(或DropdownLists):

   <select id="clientDDL"> <-- the first one
   </select> 
   <% Html.DropDownList("clientDDL",
      new SelectList((IEnumerable)ViewData["Clients"], "Code", "Name")); %> <-- the second one, Html.DropDownList generating a select under the hood.

是否可能只显示第一个(空的)和第二个因缺少字符而隐藏,将预期的HTML生成例程(Html.DropDownList)更改为Embedded Code Block

也许代替:

<% Html.DropDownList

它应该是:

<%= Html.DropDownList or <%: Html.DropDownList

请参阅here了解&lt;%:%&gt; ASP.NET 4语法

<强>被修改

也是“;”不需要行尾字符,应删除。

答案 1 :(得分:0)

查看页面 “&lt;%= Html.DropDownList(”描述“,新选择列表(ViewData(”描述“)),” - 选择 - “)%&gt;”

<强>位指示:

功能购买()作为ActionResult:

    Dim dataContext As New tblMVCDataContext
    Dim teststr As String
    Dim itemVar = From U In dataContext.Items Select U.Description

    For Each tbItem In itemVar

        teststr += tbItem + ","
    Next
    ViewData("Description") = teststr.Split(",")
    Return View(itemVar)
End Function
相关问题