我有一个包含2个部分视图_LoginPartial
和_RegisterPartial
的登录视图页面。在_RegisterPartial
中,我有包含角色的下拉列表。
@Html.DropDownListFor(m => m.CompanyProfile, new SelectList(ViewBag.CompanyProfiles, "AccountId", "AccountName"), "Select", new { @class = "form-control" })
我在GET方法中将此下拉列表初始化为
//
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.CompanyProfiles = util.GetCompanyProfiles();
ViewBag.ReturnUrl = returnUrl;
return View();
}
我从数据库中获取列表的代码是
public List<abo_AccountType> GetCompanyProfiles()
{
List<abo_AccountType> companyProfiles = new List<abo_AccountType>();
companyProfiles = db.GetAccountTypes().ToList();
return companyProfiles;
}
当我们打开登录页面时,列表被初始化,我知道我需要在POST方法中再次初始化下拉列表,所以我就像在GET方法中那样做了
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model)
{
ViewBag.CompanyProfiles = util.GetCompanyProfiles();
if (ModelState.IsValid)
{
ViewBag.CompanyProfiles = util.GetCompanyProfiles();
string[] errors = util.CheckDuplicateAccount(model);
if (errors == null)
{
long currentUser = Convert.ToInt64(System.Web.HttpContext.Current.User.Identity.GetUserId());
util.CreateNewAccount(model, currentUser);
}
else
{
AddErrors(errors);
}
}
return RedirectToAction("Login");
}
即使我再次初始化下拉列表,我仍然会收到Value cannot be null. Parameter name: items
的错误。
我已经搜索了几乎所有的答案,并且他们都说我需要再次初始化下拉菜单,我正在做,所以为什么我仍然会收到此错误。
答案 0 :(得分:0)
你应该生成&#34; GET&#34;注册的方法和在那里设置CompanyProfiles。
[HttpGet]
[AllowAnonymous]
public ActionResult Register()
{
ViewBag.CompanyProfiles = util.GetCompanyProfiles();
return View();
}
答案 1 :(得分:0)
创建另一个具有两个模型属性的模型,并在后期操作中传递它。
[HttpGet]
[AllowAnonymous]
public ActionResult Register(combinedModel model)
{
ViewBag.CompanyProfiles = util.GetCompanyProfiles();
return View(model);
}