我想在用户视图中显示密码和用户名
任何人都可以帮助我吗?我创建了一个User
和LogIn
表,如下所示。如何在Razor视图中显示User
和LogIn
表格中的属性。
模型
public class User
{
[Key]
public int UserID { get; set; }
public string Name { get; set; }
public string Mobile { get; set; }
public string JobTittle { get; set; }
public string Email { get; set; }
}
public class LogIn
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int LoginID { get; set; }
[Required(ErrorMessage = "Required.")]
public string UserName { get; set; }
public string Password { get; set; }
public User User { get; set; }
}
控制器
public class UsersController : Controller
{
private CodingContext db = new CodingContext();
// GET: Users
public ActionResult Index()
{
return View();
}
}
查看
@model Coding.Models.User
@{
ViewBag.Title = "Create";
}
<h2>Sign Up</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
答案 0 :(得分:0)
执行此操作的正确方法是创建包含User
和LogIn
对象的视图模型。但快速而肮脏的方法是使用ViewBag
s。
public class UsersController : Controller
{
private CodingContext db = new CodingContext();
// GET: Users
public ActionResult Create()
{
ViewBag.User = db.Users.FirstOrDefault(x => x.UserID == someId);
ViewBag.LogIn = db.LogIns.FirstOrDefault(x => x.LoginID == someId);
return View();
}
}
然后,您可以在视图中使用这些ViewBag
<div>
ViewBag.User.UserID
ViewBag.LogIn.LoginID
</div>
我建议你永远不要以明文形式存储密码。它们应该被盐渍和散列,并且永远不会显示出来。另外,我不知道你为什么要创建自己的LogIn表。您应该查看Microsoft身份。
答案 1 :(得分:0)
ViewModel可以包含来自不同数据模型或数据源的多个实体或对象。
有用的链接:https://www.codeproject.com/Articles/826417/Advantages-of-ViewModel-in-MVC-Model-View-Controll
ViewModel的示例:根据您的要求
public class userloginviewmodel
{
public user users{get;set;}
public login logins{get;set;}
}
控制器代码:
public ActionResult Create()
{
userloginviewmodel OBJuserloginviewmodel = new userloginviewmodel();
OBJuserloginviewmodel .Users = db.Users.FirstOrDefault(x => x.UserID == someId);
OBJuserloginviewmodel .logins = db.LogIns.FirstOrDefault(x => x.LoginID == someId);
return View(OBJuserloginviewmodel );
}
<强> viewCode:强>
@model Coding.Models.userloginviewmodel
@{
ViewBag.Title = "Create";
}
<h2>Sign Up</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.user.name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.user.name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.user.name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Login.LoginId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Login.LoginId, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Login.LoginId, "", new { @class = "text-danger" })
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
附加说明:通过使用viewmodel,我们可以实现我们想要的大部分功能,即使在此,如果您需要用户列表和登录,您可以在同一个视图模型中再添加两个属性,得到结果。
希望以上内容有用
由于
KARTHIK