好吧,很简单,我只是想创建一个注册表格,一旦我将其注册或重定向,我就希望根据选择将某人注册为候选人,公司或管理员。
问题在于,在尝试实现下拉列表之前,我的表单非常有用。
这是我在View中实现的代码
<div class="page-login-form">
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new {@class = "login-form"}))
{
@Html.LabelFor(m=>m.User.Name)
@Html.TextBoxFor(m=>m.User.Name, new { @class = "form-control" })
@Html.LabelFor(m=>m.User.Email )
@Html.TextBoxFor(m=>m.User.Email, new { @class = "form-control" })
@Html.LabelFor(m=>m.User.Password )
@Html.PasswordFor(m=>m.User.Password, new { @class = "form-control" })
<div class="alert-danger"> @Html.ValidationMessageFor(m => m.User.Password)</div>
@Html.LabelFor(m => m.User.ConfirmPassword)
@Html.PasswordFor(m => m.User.ConfirmPassword, new { @class = "form-control" })
<div class="alert-danger"> @Html.ValidationMessageFor(m => m.User.ConfirmPassword)</div>
@Html.DropDownListFor(m=>m.User.UserRoleId,new SelectList(Model.UserRoles,"Id","Name"),"select your registration", new { @class = "form-control" })
<button type="submit" class=“btn btn-‐primary”>Save</button>
}
</div>
这是我实现的ViewModel
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Visume.Models;
namespace Visume.ViewModel
{
public class RegisterViewModel1
{
public IEnumerable<UserRole> UserRoles { get; set; }
public User User { get; set; }
}
}
这是控制器中的代码
public ActionResult Register()
{
var userrole = _context.UserRoles.ToList();
var viewmodel=new RegisterViewModel1
{
UserRoles=userrole
};
return View(viewmodel);
}
--------------------------------------------------------------
[HttpPost]
public ActionResult Register( User registered)
{
return View();
}
现在错误非常简单,可以在打印屏幕上看到
当我运行调试器时,这就是我得到的https://prnt.sc/kjcr6r,基本上我可以看到的是数据正在从View传递到Controller。看一下UserRoleID,它显然是 2 ,但是当我进一步进行操作时,我仍然收到未处理Null引用的错误。我要去哪里错了,为什么。这是一个学习项目,如果你们也想自己测试,我可以完全共享文件。请提供帮助。