Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# 从基本模型访问数据库_C#_Asp.net Mvc_Generic Programming - Fatal编程技术网

C# 从基本模型访问数据库

C# 从基本模型访问数据库,c#,asp.net-mvc,generic-programming,C#,Asp.net Mvc,Generic Programming,我有一个基本模型,如下所示,我使用这个模型来获取/设置每个模型的创建和修改日期 public class BaseModel { [ForeignKey("CrUser")] public ApplicationUser UserCr { get; set; } public string CrUser { get; set; } public DateTime? MdDate { get; set; }

我有一个基本模型,如下所示,我使用这个模型来获取/设置每个模型的创建和修改日期

 public class BaseModel 
    {
       [ForeignKey("CrUser")]
        public ApplicationUser UserCr { get; set; }
        public string CrUser { get; set; }

        public DateTime? MdDate { get; set; }

        [ForeignKey("MdUser")]
        public ApplicationUser UserMd { get; set; }

         public void LogBasic()
        {
            if (this.CrDate == null)
            {
                this.CrDate = System.DateTime.Now;
                this.CrUser = HttpContext.Current.User.Identity.GetUserId();
            }
            else
            {
                this.MdDate = System.DateTime.Now;
                this.MdUser = HttpContext.Current.User.Identity.GetUserId();
            }

        }
}
创建新条目时没有问题,但在更新模型时,我无法设置MdUser。我知道原因是,CrUser和CrDate是空的,正如您在下面的方法中看到的,它们没有绑定

这是我的编辑方法之一

    public ActionResult Edit([Bind(Include = "Id,Name,FullName,Address,TaxNumber,TaxOffice,Phone1,Phone2,Email,CompanyType")] CrmCompany crmcompany)
            {
                if (ModelState.IsValid)
                {
                    crmcompany.LogBasic();
                    db.Entry(crmcompany).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
为了用我的方式解决这个问题,我需要传递CrDate和CrUser,或者我需要从数据库中获取每个编辑方法


如何用LogBasic方法解决这个问题。如果我可以访问数据库并在LogBasic方法中获得Crdate和Cruser,我可以很容易地解决这个问题,但是,任何模型都可以调用LogBasic方法

无论发生什么情况,您都必须将CrDate和CrUser添加到模型创建或LogBasic函数中。如果您在更新时不这样做,它们将被清空,因为模型中没有设置任何值。我建议将它们存储为隐藏字段,并像正常情况一样绑定它们。这样,您就不必两次到数据库进行更新

编辑: 为了使这更容易,可以将此方法添加到BaseModel类中。它将输出要绑定的隐藏字段。我做了一些假设,比如用户ID都是正整数

public MvcHtmlString BaseModelHiddenFields()
{
    StringBuilder outputString = new StringBuilder();
    if(CrDate != null && CrDate.HasValue)
    {
        sb.AppendFormat("<input type=\"hidden\" name\="CrDate\" value=\"{0}\">", CrDate.Value);
    }
    if(CrUser > 0)
    {
        sb.AppendFormat("<input type=\"hidden\" name\="CrUser\" value=\"{0}\">", CrUser);
    }
    if(MdDate != null && MdDate.HasValue)
    {
        sb.AppendFormat("<input type=\"hidden\" name\="MdDate\" value=\"{0}\">", MdDate.Value);
    }
    if(MdUser > 0)
    {
        sb.AppendFormat("<input type=\"hidden\" name\="MdUser\" value=\"{0}\">", MdUser);
    }

    return MvcHtmlString.Create(sb.ToString());
}

感谢您的回复,但是当我需要向基础模型添加一个参数时,我需要将输入隐藏类型添加到所有编辑视图中,对吗?这是正确的。您可能希望在基础模型上创建一个输出所有隐藏字段的方法。这样你就可以在视图中调用它。使它比从头开始做更容易,更不容易出错。是的,我的问题是关于这一点,但我不能创建那个方法,你能帮我吗?