-1

次のコードでは、country=1、school=2、course=3 を指定しています。しかし、その後、userdata.UserCountry.CountryId= Convert.ToInt32(country) のように割り当てようとすると、null値を意味する「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されます。

[HttpPost]
    public ActionResult Settings(FormCollection frm)
    {

            UsersContext db = new UsersContext();

            var userdata = db.UserDetails.Where(k => k.UserId == WebSecurity.CurrentUserId).FirstOrDefault();

            string country = frm["UserCountry"]; // here I have 1.
            string school = frm["UserSchool"];
            string course = frm["UserCourse"];

            userdata.UserCountry.CountryId= Convert.ToInt32(country); // Here i have the null reference error.. !!
            userdata.UserSchool.SchoolId = Convert.ToInt32(school);
            userdata.UserCourse.CourseId = Convert.ToInt32(course);
            userdata.Link = frm["Link"];
            userdata.FullName = frm["FullName"];
            userdata.Email = frm["Email"];
            userdata.About = frm["About"];

            db.SaveChanges();

            return Content(Boolean.TrueString);
    }

これはモデルです:

public class UserDetail
{
    public int Id { get; set; }
    public int UserId { get; set; }
    [Required]
    [Display(Name="Full name")]
    public string FullName { get; set; }
    public string Link { get; set; }
    public bool? Verified { get; set; }

    [Required]
    [Display(Name="Email")]
    public string Email { get; set; }

    [Display(Name="About")]
    public string About { get; set; }
    public virtual School UserSchool { get; set; }
    public virtual Course UserCourse { get; set; }

    [Display(Name = "Country")]
    public virtual Country UserCountry { get; set; }

}

誰でもこれを修正する方法を教えてくれませんか...plz.

4

1 に答える 1

1

クエリ結果に関連するエンティティを含めるようにしてください:

 var userdata = db.UserDetails
                  .Include("UserCountry")
                  .Include("UserSchool")
                  .Include("UserCourse")
                  .Where(k => k.UserId == WebSecurity.CurrentUserId)
                  .FirstOrDefault();

ところで、検索した UserId を持つ UserDetails が実際にあることを確認してください。

于 2013-01-02T22:27:11.117 に答える