Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net mvc-5中的ViewModel可以用于登录吗?_C#_Asp.net_Asp.net Mvc 5 - Fatal编程技术网

C# asp.net mvc-5中的ViewModel可以用于登录吗?

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

在我的asp.net项目中,我使用了一个名为DoctorLoginViewModel.cs的ViewModel,用于呈现登录视图。 我想知道这个ViewModel是否可以用于登录ActionMethod

凭证在doc\u cred表中

DoctorLoginView模型:

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();
}