0

Visual Studio 2013,ASP.NEt MVC 5 Identity 请有人帮助我如何通过控制器将信息保存在数据库中。让我解释一下...我希望发生以下情况:登录后的用户能够更新他的教育信息。在对字段进行更改后,他将按下保存按钮,信息将保存在数据库中。当我使用默认的 aspnet 用户类时,这很好用,我使用了用户管理器。更新方法和信息已保存,但我无法对任何其他表执行此操作。如果有人帮助我,我将非常感激。这是控制器类编辑方法

   public async Task<ActionResult> Edit(string id, Education education)
    {

        if (!User.Identity.IsAuthenticated)
        {
            Response.Redirect("~/Account/Login");
        }

        var db = new ApplicationDbContext();
        var educationdb = db.Edu.First(u => u.EducationID == education.EducationID);

        educationdb.Qualification = education.Qualification;
        educationdb.School = education.School;
        educationdb.SchFrom = education.SchFrom;
        educationdb.SchTo = education.SchTo;
        educationdb.College = education.College;
        educationdb.ClgFrom = education.ClgFrom;
        educationdb.ClgTo = education.ClgTo;
        educationdb.University = education.University;
        educationdb.UniFrom = education.UniTo;
        educationdb.Description = education.Description;


        db.Entry(educationdb).State = System.Data.Entity.EntityState.Modified;
        await db.SaveChangesAsync();
        //return RedirectToAction("Index");
        return View();
    }

这是模型类:

namespace theme1.Models
{
public class Education
{
    public string EducationID { get; set; }

    public string UserID { get; set; }
    public ApplicationUser User { get; set; }

    public string Qualification { get; set; }

    public string School { get; set; }
    [DataType(DataType.Date)]
    public DateTime SchFrom { get; set; }
    [DataType(DataType.Date)]
    public DateTime SchTo { get; set; }

    public string College { get; set; }
    [DataType(DataType.Date)]
    public DateTime ClgFrom { get; set; }
    [DataType(DataType.Date)]
    public DateTime ClgTo { get; set; }

    public string University { get; set; }
    [DataType(DataType.Date)]
    public DateTime UniFrom { get; set; }
    [DataType(DataType.Date)]
    public DateTime UniTo { get; set; }

    public string Description { get; set; }
 }
}

vareducationdb = db.Edu.First(u => u.EducationID == education.EducationID); 这一行给了我一个错误异常详细信息:System.InvalidOperationException:序列不包含任何元素

源错误:第 109 行:var educationdb = db.Edu.First(u => u.EducationID == education.EducationID);

4

3 回答 3

0

我怀疑您在 ApplicationContext 中缺少 DBSet for Education 模型。

如果这不能解决问题,您能否提供您的 ApplicationContext 类的代码?

于 2014-08-20T07:12:30.140 回答
0

代替 :

var educationdb = db.Edu.First(u => u.EducationID == education.EducationID);

尝试这个 :

var educationdb = db.Edu.Where(u => u.EducationID == education.EducationID).FirstOrDefault();

或者

代替 :

var educationdb = db.Edu.First(u => u.EducationID == education.EducationID);

尝试这个 :

var educationdb = db.Edu.FirstOrDefault(u => u.EducationID == education.EducationID);
于 2014-08-19T11:48:10.110 回答
0

我无法评论您与 Kartikeya 的讨论,因为我是 stackoverflow 的新手并且缺乏声誉。

但是在你改变你的 lambda 之后:

var educationdb = db.Edu.Where(u => u.EducationID == 
education.EducationID).FirstOrDefault();

从您与 Kartikeya 的讨论来看,听起来您正在考虑创建而不是编辑。你不能编辑不存在的东西。

    // GET: Model
    public ActionResult Create()
    {
         return View();
    }

在 MVC 5 中,通过右键单击该 Action 并选择“添加视图”并插入您需要的信息来构建视图非常容易,当您创建视图时,为 Create 创建您的 post 方法:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include ="EducationID, UserId....")] Education education)
    {
        if (ModelState.IsValid)
        {
            //any extra logic you might want

            db.Edu.Add(education);
            db.SaveChanges();

            return RedirectToAction("Index");
        }
    return View(education);
    }
于 2016-04-20T14:52:08.313 回答