当我单击编辑按钮时,使用 mvc 不显示下拉值?

When i click edit button Dropdown value is not display using mvc?

当我点击编辑按钮时。下拉值未出现,但 ViewBag.DomainID 值存在但未显示。它显示 The specified cast from a materialized 'System.Int64' type to the 'System.Int32' type is not valid.

控制器:

[Authorize]
        [MyExceptionHandler]
        public ActionResult EditModules(int id)
        {
            EditDomain_Bind();
            userType type = new userType();
            var ModID = type.GetEditRoleModulesViews(id).Find(Emp => Emp.ModuleID == id);
            int domainID = ModID.DomainID;
            AccountContext db = new AccountContext();
            string selected = (from sub in db.domain
                               where sub.DomainID == domainID
                               select sub.DomainName).First();
            ViewBag.DomainID = new SelectList(db.domain, "DomainID", "DomainName", selected);

            return View(ModID);
        }

Cs.HTML:

<div class="col-lg-4">
                            <fieldset class="form-group">
                                <label class="form-label" for="exampleInput">Domain Name</label>
                                @Html.DropDownList("DomainID")
                                @Html.ValidationMessageFor(model => Model.DomainID, null, new { @style = "color: red" })
                            </fieldset>
                        </div>

型号:

public DbSet<Domain> domain { get; set; }
    public class Domain
    {
        [Key]
        public int DomainID { get; set; }      
        public string DomainName { get; set; }

    }

问题是您将 DomainID 定义为:

public int DomainID { get; set; }

在 C# 中,但它是数据库中的 bigint(即 long)。因此,您需要使用:

public long DomainID { get; set; } 

并更改所有其他 int DomainID 引用。如:

long domainID = ModID.DomainID;