0

我是 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 语句移动到 Respository 以使事情变得更简洁,这样我就不会在 Edit 和 Create 中重复相同的选择。

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

在 中Repository,返回类型应该GetCustomersSelectListItem?我似乎无法让它工作。

4

3 回答 3

1

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

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

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

于 2009-12-28T21:08:43.913 回答
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();
        }
于 2009-12-29T14:14:10.357 回答
0

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

于 2009-12-29T16:11:37.827 回答