【问题标题】:Import the values stored in the database from the controller从控制器导入存储在数据库中的值
【发布时间】:2018-06-21 16:06:39
【问题描述】:
[HttpGet]
    public ActionResult Create()
    {
        Articles article = new Articles();
        return View(article);
    }

    [HttpPost]
    public ActionResult Create(Articles article)
    {
        try
        {
            article.Family = article.ArticleIDX;  //그룹번호
            article.Parent = 0;                 //순서
            article.Depth = 1;                  //그룹내 최상위 글로부터 매겨지는 순서
            article.Indent = 0;                 //들여쓰기
            article.ModifyDate = DateTime.Now;
            article.ModifyMemberID = User.Identity.Name;

            db.Articles.Add(article);
            db.SaveChanges();

            if (Request.Files.Count > 0)
            {
                var attachFile = Request.Files[0];

                if (attachFile != null && attachFile.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(attachFile.FileName);
                    var path = Path.Combine(Server.MapPath("~/Upload/"), fileName);
                    attachFile.SaveAs(path);

                    ArticleFiles file = new ArticleFiles();
                    file.ArticleIDX = article.ArticleIDX;
                    file.FilePath = "/Upload/";
                    file.FileName = fileName;
                    file.FileFormat = Path.GetExtension(attachFile.FileName);
                    file.FileSize = attachFile.ContentLength;
                    file.UploadDate = DateTime.Now;

                    db.ArticleFiles.Add(file);
                    db.SaveChanges();
                }
            }
            ViewBag.Result = "OK";
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Board");
            Debug.WriteLine(ex.ToString());
            ViewBag.Result = "FAIL";
        }
        return View(article);
        //return RedirectToAction("ArticleList");
    }
[HttpGet]
    public ActionResult ReplyCreate(int aidx)
    {
        Articles articleReply = new Articles();
        return View(articleReply);
    }

    [HttpPost]
    public ActionResult ReplyCreate(Articles replyArticles)
    {
        Articles articles = new Articles();
        try
        {
            //부모글 불러오기(글번호로 불러오기)
            Articles note = db.Articles.Find(articles.ArticleIDX);

            //Family는 원글의 번호
            replyArticles.Family = replyArticles.ArticleIDX;
            //Parent 순서

            //Depth 는 답글의 글 번호
            //Indent 들여쓰기

            replyArticles.ModifyDate = DateTime.Now;
            replyArticles.ModifyMemberID = User.Identity.Name;

            db.Articles.Add(replyArticles);
            db.SaveChanges();

            ViewBag.Result = "OK";
        }
        catch (Exception ex)
        {
            ViewBag.Result = "FAIL";
        }
        return View(replyArticles);
    }

public partial class Articles
{
    [Key]
    public int ArticleIDX { get; set; }

    public int? Family { get; set; }

    public int? Depth { get; set; }

    public int? Indent { get; set; }

    public int? Parent { get; set; }

    [StringLength(200)]
    public string Title { get; set; }

    [Column(TypeName = "text")]
    public string Contents { get; set; }

    [StringLength(50)]
    public string Category { get; set; }

    [StringLength(20)]
    public string ModifyMemberID { get; set; }

    public DateTime? ModifyDate { get; set; }

    public virtual Members Members { get; set; }

}

以上代码是我实现的代码。 使用 create 方法创建的文章存储在数据库中。 当您尝试使用ReplyCreate 调用存储在数据库中的帖子时,您会怎么做? 空值通常输入到模型中。 我尝试使用主键找到它,但主键也有一个空值。

【问题讨论】:

  • 主键为空值 ?真的不是主键stackoverflow.com/questions/3906811/…
  • 主键必须具有唯一值,不能为空或空。您可以使用查询从 DB 中检索 articleReply 值,方法是提及该 PK 并将其呈现给查看。
  • 数据库中存储的主键不为空。当我从控制器加载它时,它没有被正确调用。
  • 文章注释 = db.Articles.Find(articles.ArticleIDX);这意味着显示空值。数据库中的主键不为空。
  • 再看看你的代码。您正在使用 Find 方法搜索什么文章?传入参数的那个还是.....?

标签: c# asp.net-mvc


【解决方案1】:
Articles note = db.Articles.Find(articles.ArticleIDX);

不起作用,因为articles 是一个空对象,由于该行

Articles articles = new Articles();

就在上面。在调用 Find 方法之前,您从不设置此对象中的任何字段,包括 ArticleIDX。

我认为您可能打算使用传入控制器的值进行搜索?在这种情况下,它需要是

Articles note = db.Articles.Find(replyArticles.ArticleIDX);

因为replyArticles 是在请求​​中从浏览器接收到的变量。我假设这在 ArticleIDX 字段中包含一个值。

话虽如此,我不知道这行代码的目的是什么,因为您在以下任何代码中都没有使用过note对象,所以我不知道您为什么需要找到它.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多