将值传递到mvc视图中的下拉列表

问题描述 投票:0回答:3

我是MVC编程的新手。我正在将其他数据库表中的值传递给我的编辑并创建视图以填充一些下拉列表。效果很好。我的控制器中有这样的代码,可以进行编辑和创建:

var db = new MyProgramDataContext();
Order order = orderRepository.GetOrder(id);
ViewData["customer"] = from c in db.customers
                       select new SelectListItem
                       {
                              Text = c.customer_name,
                              Value = c.customer_name
                       }
return View(order);

[我想将select语句移至存储库以使内容更简洁,以便在编辑和创建时不再重复相同的选择。

ViewData["customer"] = orderRepository.GetCustomers();

Repository中,GetCustomers的返回类型应为SelectListItem吗?我似乎无法使其正常工作。

c# asp.net-mvc drop-down-menu viewdata
3个回答
1
投票

查看Rob Conery如何在他的博客上实现它:

http://blog.wekeroad.com/blog/asp-net-mvc-dropdownlist-and-html-attributes/

您可以获取所有客户,然后创建一个SelectList并相应地设置ViewData。


0
投票

尝试这种方式

在诸如DDLHelper之类的某些帮助器类上移动此类功能

<select id="idXYZ" name="XYZ">
  <%= DDLHelper.DDl_order(Model.orderId)%>
</select>

在某些帮助程序类(如DDLHelper)中编写函数

    public static string DDl_order(int orderId)
        {
            string format = "<option value=\"{0}\" {2} >{1}</option>";
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.AppendFormat(format, "", "--Select--", "");

            List<Models.UrClass> urclass=orderRepository.GetCustomers();

            foreach (var item in client)
            {
                string ordid = item.orderId.ToString().Encrypt();

                if (item.ClientID == orderId)
                    sb.AppendFormat(format, orderid , item.OrdName,selected=\"selected\"");
                else
                    sb.AppendFormat(format, ordid , item.OrdName, "");
            }
            return sb.ToString();
        }

0
投票

我现在在FormViewModel类中具有我的SelectList,并且正在使用部分视图进行编辑和创建代码。谢谢大家。

© www.soinside.com 2019 - 2024. All rights reserved.