2015-05-29 33 views
0

我使用ASP.Net Mvc4和我有3個表NAMD tblUser,tblCity和tblState.I要註冊國家和本市用戶從下拉菜單中,但在時間選擇註冊我已經在tblUser中保存了特定州和城市的ID。 現在我想顯示國名與城市上的用戶列表頁......請幫助我.. 這裏是我的代碼顯示名稱,同時存儲州市MVC的ID

我的控制器:

 public ActionResult Index() 
    { 
     ViewBag.state = new SelectList(DbEntity.tblStates, "Id", "State"); 
     return View(); 
    } 

    public JsonResult Getcities(int id) 
    { 
     ViewBag.city = new SelectList(DbEntity.tblCities.Where(m=>m.sid==id),"Id","City"); 
     return Json(ViewBag.city,JsonRequestBehavior.AllowGet); 

    } 

    [HttpPost] 
    public void SaveUser(User user) 
    { 
     string statename = Request.Form["State"]; 

     if(user.Id!=0) 
     { 
      var t = DbEntity.tblUsers.Where(m => m.Id == user.Id).FirstOrDefault(); 
      t.Id = user.Id; 
      t.Name = user.Name; 
      t.State = user.state; 
      t.City = user.city; 
     } 

     else 
     { 
      tblUser tblobj = new tblUser(); 
      tblobj.Id = user.Id; 
      tblobj.Name = user.Name; 
      tblobj.State = user.state; 
      tblobj.City = user.city; 
      DbEntity.tblUsers.Add(tblobj); 
     } 

     DbEntity.SaveChanges(); 

    } 


    public ActionResult DisplayList(User user) 
    { 
     List<User> u = new List<User>(); 
     List<tblUser> userlist = new List<tblUser>(); 

     userlist = DbEntity.tblUsers.Where(m => m.Status == true).ToList(); 

     User objU = new User(); 
     foreach (var item in userlist) 
     { 
      objU = new User(); 
      objU.Id =(int) item.Id; 
      objU.Name = item.Name; 
      objU.state = (int)item.State; 
      objU.city = (int)item.City; 
      u.Add(objU); 
     } 

     return View(u); 
    } 



} 

}

查看Index.cshtml

 $('#state').change(function() { 

      $.getJSON('/Home/Getcities/' + $('#state').val(), function (data) { 

       var items = '<option>Select a City</option>'; 
       $.each(data, function (i, city) { 
        items += "<option value='" + city.Value + "'>" + city.Text + "</option>"; 
       }); 
       $('#city').html(items); 
      }) 

     }); 
    }); 

@using (Html.BeginForm("SaveUser", "Home", FormMethod.Post)) 
{ 

    <div>@Html.HiddenFor(m => m.Id)</div> 


    <div>@Html.LabelFor(m => m.Name)</div> 

    <div>@Html.TextBoxFor(m => m.Name)</div> 

    <div>Select state:</div> 
    <div> 
     @Html.DropDownList("state", ViewBag.state as SelectList, "Select", new { id = "state" }) 

    </div> 


<div> 
    <select id="city" name="City"></select><br /> 

</div> 
<div> 
    <input type="submit" value="submit" onclick="location.href='@Url.Action("SaveUser", "Home")'" /> 
</div> 

} 

查看:DisplayList.cshtml

<div> 
    <table> 
     <tr><td>Name</td><td>State</td><td>City</td></tr> 
     @foreach (var item in Model) 
     { 

      <tr> 
       <td>@item.Name</td> 
       <td>@item.state</td> 
       <td>@item.city</td> 
       <td>@Html.ActionLink("Edit","EditUser")</td> 
      </tr> 

     } 

    </table> 

</div> 
+0

你得到一個錯誤?實際發生了什麼? –

+0

@Mike Cheel:不,我沒有得到任何錯誤,我想展示國家和城市的在列表頁面的名字,但我有自己的數據庫... – Namrata

回答

0

試試這個,

foreach (var item in userlist) 
     { 
      objU = new User(); 
      objU.Id =(int) item.Id; 
      objU.Name = item.Name; 
      objU.state = item.State.Select(s=>s.Name).firstOrDefault(); 
      objU.city = item.City.Select(c=>c.Name).firstOrDefault(); 
      u.Add(objU); 
     } 
+0

的保存標識的:我的模式是不含有州和城市的名稱因爲我在數據庫中保存了他們的ID。所以我不能aceess名字,因爲我有他們的ID在數據庫中Forign表 – Namrata

0
My model Contains: 

     public int Id { get; set; } 

     public string Name { get; set; } 

     public long state { get; set; } 

     public long city { get; set; } 

     public string StateName { get; set; } 
     public string Cityname { get; set; } 

     public bool Status { get; set; } 

Controller Contains: 


    public ActionResult Index() 
     { 
      ViewBag.state = new SelectList(DbEntity.tblStates, "Id", "State"); 
      return View(); 
     } 
     public JsonResult Getcities(int id) 
     { 
      ViewBag.city = new SelectList(DbEntity.tblCities.Where(m=>m.sid==id),"Id","City"); 
      return Json(ViewBag.city,JsonRequestBehavior.AllowGet); 
     } 
     [HttpPost] 
     public void SaveUser(User user) 
     { 

      if(user.Id!=0) 
      { 
       var t = DbEntity.tblUsers.Where(m => m.Id == user.Id).FirstOrDefault(); 
       t.Id = user.Id; 
       t.Name = user.Name; 
       t.State = user.state; 
       t.City = user.city; 
      } 

      else 
      { 
       tblUser tblobj = new tblUser(); 
       tblobj.Id = user.Id; 
       tblobj.Name = user.Name; 
       tblobj.State = user.state; 
       tblobj.City = user.city; 
       DbEntity.tblUsers.Add(tblobj); 
      } 

      DbEntity.SaveChanges(); 

     } 


     public ActionResult DisplayList(User user) 
     { 

      User objU = new User(); 
      List<User> u = new List<User>(); 
      List<tblUser> userlist = new List<tblUser>(); 


      u = (from a in DbEntity.tblUsers 
         join b in DbEntity.tblStates on a.State equals b.Id join c in DbEntity.tblCities on a.City equals c.Id 
         select new { a, b,c }).Where(p => p.a.Status == true).ToList().Select(p => new User() 
        { 
         Id = (int)p.a.Id, 
         Name = p.a.Name, 
         StateName = p.b.State, 
         state = (int)p.a.State, 
         city = (int)p.a.City, 
         Cityname = p.c.City 



        }).ToList<User>(); 

      return View(u); 
     } 

View DisplayList.cshtml Contains: 




     <div> 
      <table> 
       <tr><td>Name</td><td>State</td><td>City</td><td>Action</td></tr> 
       @foreach (var item in Model) 
       { 

        <tr> 
         <td>@item.Name</td> 
         <td>@item.StateName</td> 
         <td>@item.city</td> 

        </tr> 

       } 

      </table> 

     </div> 
    } 
+0

@Anand拉詹來了。還有使用加入多個表之間的控制器查詢是的,我能夠顯示國家和城市的名稱在列表頁,因爲我有存儲在表中的繼承人ID,但從聯接查詢,我得到它的工作... – Namrata