Nazmul Hossain
Nazmul Hossain

Reputation: 2085

Two or More Entity Models and One View

I am new in MVC4. I am trying to get one single row from a join query and I want to show the data in a view, but in got an error. I am not sure where is the actual problem. This LINQ query return a single row.

Controller

public ActionResult Index()
    {
        var userId = WebSecurity.GetUserId(User.Identity.Name);
        var doctorProfile =
           ( from DP in db.DoctorProfiles
            from PP in db.ProfilePictures
            where
              PP.UserProfiles.UserId == 13
            select new
            {
                DP.DoctorProfileId,
                DP.UserId,
                DP.UserName,
                DP.DocName,
                DP.ForeignDegree,
                DP.MbbsPassingYear,
                DP.SocietyMember,
                DP.NationalId,
                DP.CurrentRisingPlace,
                DP.Email,
                DP.DoctorSpecialistId,
                DP.IsVerified,
                DP.FCPS,
                DP.CellNo,
                DP.DoctorSpecialistName.DoctorSpecialistName,
                PP.ProfilePictureId,
                PP.FullImageUrl,
                PP.ThumbImageUrl,
                PP.AlternateText,
                Expr2 = PP.UserId,
                PP.SmallThumbImageUrl
            }).FirstOrDefault();

        return View(doctorProfile);
    }

And View

        @model IEnumerable<EPrescription.Models.DoctorProfile>

@{
    ViewBag.Title = "Index";
}
<div class="row">

    <div class="col-lg-8">

        <div class="editProfile">
            <p>UserName : @Html.DisplayFor(m => m.UserName)</p>
            <p>Full Name : @Html.DisplayFor(m => m.DocName)</p>
            <p>FCPS : @Html.DisplayFor(m => m.FCPS)</p>
            <p>Blood Group : @Html.DisplayFor(m => m.DoctorSpecialistName.DoctorSpecialistName)</p>
            <p>Specialis : @Html.DisplayFor(m => m.MbbsPassingYear)</p>
            <p>Society Member : @Html.DisplayFor(m => m.SocietyMember)</p>
            <p>Foreign Degree : @Html.DisplayFor(m => m.ForeignDegree)</p>
            <p>Current Rising Place : @Html.DisplayFor(m => m.CurrentRisingPlace)</p>
            <p>National Id : @Html.DisplayFor(m => m.NationalId)</p>
            <p>Email : @Html.DisplayFor(m => m.Email)</p>
            <p>Cell No : @Html.DisplayFor(m => m.CellNo)</p>
            <p>Is Verified : @Html.DisplayFor(m => m.IsVerified)</p>

        </div>
    </div>

Upvotes: 0

Views: 76

Answers (1)

Ilya Sulimanov
Ilya Sulimanov

Reputation: 7836

You create and pass anonymous type, but you view receive PatientProfile

chenged to:

  var userId = WebSecurity.GetUserId(User.Identity.Name);
        var doctorProfile =
           ( from DP in db.DoctorProfiles
            from PP in db.ProfilePictures
            where
              PP.UserProfiles.UserId == 13
            select new PatientProfile()
            {
              DoctorProfileId =  DP.DoctorProfileId,
              UserId =  DP.UserId,
              UserName =  DP.UserName             
              ...
            });

        return View(doctorProfile);

Upvotes: 3

Related Questions