2009-12-28 52 views
0

我是MVC编程的新手。我将其他数据库表中的值传递给我的编辑,并创建视图来填充某些下拉列表。它运作良好。我在我的控制器中编辑和创建如下代码:将值传递给mvc视图中的下拉列表

var db = new MyProgramDataContext(); Order order = orderRepository.GetOrder(id); 计算机[ “客户”] =从C中db.customers 选择新SelectListItem { 文本= c.customer_name, 值= c.customer_name } 返回视图(顺序);

我想将select语句移动到Respository以使事情更清洁一点,以便在Edit和Create中不重复相同的选择。

ViewData [“customer”] = orderRepository.GetCustomers();

在Respository中,GetCustomers的返回类型是否应该是SelectListItem?我似乎无法得到它的工作。

+0

您可能应该使用您正在执行此MVC编程的框架和语言对此进行标记。 MVC是一种在许多方面已经实现了很长时间的模式。 –

+0

嗯,我认为这是我的第一个标签,但它不存在...对不起! – RememberME

回答

0

现在我有在FormViewModel类中选择列表,并使用部分视图来编辑和创建代码。感谢大家。

1

退房罗布科纳是如何实现它在自己的博客:

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

你可以得到所有的客户,然后创建的SelectList并据此设定的ViewData。

+0

OK,所以我现在将数据从Respository返回为IQueryable,然后在Controller中执行: ViewData [“customer”] = new SelectList(orderRespository.GetCustomers(),“customer_name”,“customer_name”,order.customer ); 这是工作。这是最好的方法吗? – RememberME

+0

如果有效,请继续使用它。如果/当您找到适合您的更好实施时,您可以随时返回此代码。 –

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(); 
     } 
相关问题