当我单击编辑按钮时,使用 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;
当我点击编辑按钮时。下拉值未出现,但 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;