【问题标题】:Create a separate Method for SelectList to pull in to viewbag为 SelectList 创建一个单独的方法以拉入 viewbag
【发布时间】:2015-09-18 15:44:14
【问题描述】:

我在几个不同的地方使用特定选择列表的代码。令人讨厌的是,每当我需要更新它正在提取的数据时——我必须在所有不同的地方更新它。所以现在我想创建一个他们都引用的方法并在一个位置更新它。但是,我拥有的代码不起作用。

这是我调用方法放入viewbag的代码:

ViewBag.PrimaryTechnicianId = TechList();

这是我正在创建的方法:

public Action TechList()
{
     Var techList = new SelectList(db.Users.Where(u => u.Status == 1 & u.RoleID == new Guid(Properties.Settings.Default.TechID)).OrderBy(u => u.FullName), "UserId", "FullName");

     return (techList);
}

我在调用方法(在第一个代码中)时收到错误消息(即使我已经添加了引用)

当前上下文中不存在名称“TicketList”

在返回的第二个代码(techList)中,我收到了这个错误:

无法将类型“System.Web.MVC.SelectList”显式转换为“System.Action”

我发现我可以将方法更改为 IEnumerable,但这似乎与我的用法不同。我是否正确,因为我在 viewbag 中创建了 selectList,它不是 IEnumerable? Cannot implicitly convert type 'System.Web.Mvc.SelectList' to 'System.Collections.Generic.ICollection<System.Web.Mvc.SelectList>'

【问题讨论】:

  • 你的方法返回一个SelectList,所以它必须是public SelectList TechList() { .. }。您遇到的错误与您显示的任何代码无关(您的代码中没有TicketList

标签: c# asp.net-mvc viewbag selectlist


【解决方案1】:

您的方法应返回SelectList 而不是Action。在您看来,当您将其从 ViewBag 中拉出时,您可能需要将其显式转换为 SelectList

Html.DropDownList("techList_drpdwn", (SelectList)ViewBag.PrimaryTechnicianId, new { id = "techList_drpdwn" })

【讨论】:

  • 这直接解决了问题。该方法返回 Action,而不是 SelectList。
【解决方案2】:

将您的 TechList 的返回类型设置为 SelectList 而不是 Action。 我不确定你在哪里调用你的 ViewBag 分配,但在调用它之前尝试修复方法返回类型,就好像它有一个错误,它不会被正确引用

【讨论】:

    【解决方案3】:

    你可以在某处创建一个公共类和静态方法

    public class ViewHelpers
    {
        public static SelectList TechList(int status, guid role)
        {
            using (var db = new DbContext())
            {
                return new SelectList(db.Users.Where(u => u.Status == status & u.RoleID == role).OrderBy(u => u.FullName).ToList(), "UserId", "FullName");
            }
        }
    }
    

    然后从你的视图中调用它

    @(Html.DropDownList("PrimaryTechnicianId", 
                         ViewHelpers.TechList(1, new Guid(Properties.Settings.Default.TechID))
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2020-02-21
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      相关资源
      最近更新 更多