C# asp.net mvc-5中的ViewModel可以用于登录吗?
在我的asp.net项目中,我使用了一个名为DoctorLoginViewModel.cs的ViewModel,用于呈现登录视图。 我想知道这个ViewModel是否可以用于登录ActionMethod 凭证在doc\u cred表中 DoctorLoginView模型:C# asp.net mvc-5中的ViewModel可以用于登录吗?,c#,asp.net,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc 5,在我的asp.net项目中,我使用了一个名为DoctorLoginViewModel.cs的ViewModel,用于呈现登录视图。 我想知道这个ViewModel是否可以用于登录ActionMethod 凭证在doc\u cred表中 DoctorLoginView模型: using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnno
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace das.Models.ViewModel.Doctor
{
[Table("doc_cred")]
public class DoctorLoginViewModel
{
[Required]
[DisplayName("Email")]
public string doc_email { get; set; }
[Required]
[DisplayName("Password")]
public string doc_pass { get; set; }
[Required]
[DisplayName("Confirm Password")]
[Compare("Password")]
public string confirm_doc_pass { get; set; }
}
}
这是我在doc_cred.cs下的内容:
namespace das.Models.DataModel
{
using System;
using System.Collections.Generic;
public partial class doc_cred
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public doc_cred()
{
this.doc_personal = new HashSet<doc_personal>();
}
public string doc_email { get; set; }
public string doc_pass { get; set; }
public System.DateTime doc_acc_creation { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<doc_personal> doc_personal { get; set; }
}
}
现在我的问题是我可以使用ViewModel登录吗?
如果是,怎么做
编辑:这是我的Login.cshtml:
@model das.Models.ViewModel.Doctor.DoctorLoginViewModel
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>DoctorLoginViewModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.doc_email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.doc_email, new { htmlAttributes
= new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.doc_email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.doc_pass, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.doc_pass, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.doc_pass, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.confirm_doc_pass, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.confirm_doc_pass, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.confirm_doc_pass, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@model das.Models.ViewModel.Doctor.DoctorLoginViewModel
@{
ViewBag.Title=“登录”;
}
登录
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
DoctorLoginView模型
@Html.ValidationSummary(true,“,new{@class=“text danger”})
@LabelFor(model=>model.doc_电子邮件,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.doc_电子邮件,新的{htmlAttributes
=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.doc_email,“,new{@class=“text danger”})
@LabelFor(model=>model.doc_pass,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.doc_pass,new{htmlAttributes=new{@class=“form control”}})
@Html.ValidationMessageFor(model=>model.doc_pass,“,new{@class=“text danger”})
@LabelFor(model=>model.confirm_doc_pass,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.confirm_doc_pass,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.confirm_doc_pass,“,new{@class=“text danger”})
}
@ActionLink(“返回列表”、“索引”)
请尝试此操作。登录视图与以前相同,但我无法登录。我是否必须以某种方式从ViewModel映射doc\u cred.cs?从doctorLoginView模型中删除=>[表(“doc\u cred”)],然后尝试一下。它应该可以工作,因为视图模型不需要表属性。谢谢。但是我不明白……我认为需要[Table(“doc_cred”)从viewmodel映射doc_cred表
@model das.Models.ViewModel.Doctor.DoctorLoginViewModel
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>DoctorLoginViewModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.doc_email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.doc_email, new { htmlAttributes
= new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.doc_email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.doc_pass, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.doc_pass, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.doc_pass, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.confirm_doc_pass, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.confirm_doc_pass, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.confirm_doc_pass, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
[HttpPost]
public ActionResult Login(DoctorLoginViewModel dl)
{
var login = db.doc_cred.Where(a => a.doc_email.Equals(dl.doc_email) &&
a.doc_pass.Equals(dl.doc_pass)).FirstOrDefault();
if(login != null)
{
return RedirectToAction("Dashboard","Doctor");
}
return View();
}