0

Visual Studio 2013、ASP.NET MVC 5 Identityコントローラーを介してデータベースに情報を保存する方法を教えてください。説明させてください...次のことを実現したい: ログインしたユーザーは、自分の教育情報を更新できます。フィールドに変更を加えた後、保存ボタンを押すと、情報がデータベースに保存されます。デフォルトの aspnet ユーザー クラスを使用している場合、これは正常に機能します。usermanager を使用します。update メソッドと情報は保存されますが、他のテーブルでは保存できません。誰かが私を助けてくれたら本当に感謝します。コントローラークラスの編集メソッドは次のとおりです

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

var educationdb = db.Edu.First(u => u.EducationID == education.EducationID); この行でエラー Exception Details: System.InvalidOperationException: Sequence contains no elements が表示されます

ソース エラー: 109 行目: var educationdb = db.Edu.First(u => u.EducationID == education.EducationID);

4

3 に答える 3

0

私はスタックオーバーフローが初めてで評判が悪いので、Kartikeya とのあなたの議論についてコメントすることはできません。

しかし、ラムダを変更した後:

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

Kartikeya との議論から、編集ではなく作成を考えているように聞こえます。存在しないものは編集できません。

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

MVC 5 では、アクション内で右クリックして [ビューの追加] を選択し、必要な情報を挿入することでビューをスキャフォールディングするのは非常に簡単です。ビューを作成したら、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 に答える
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 に答える