C# 显示数据库中的名称,同时存储state city mvc的id

C# 显示数据库中的名称,同时存储state city mvc的id,c#,C#,我正在使用ASP.Net Mvc4,我有3个表namd tblUser、tblCity和tblState。我想用从下拉列表中选择的州和城市注册用户,但在注册时,我已在tblUser中保存了特定州和城市的id。 现在我想在用户列表页面上显示州和城市的名称…请帮助我。。 这是我的密码 我的控制器: public ActionResult Index() { ViewBag.state = new SelectList(DbEntity.tblStates, "I

我正在使用ASP.Net Mvc4,我有3个表namd tblUser、tblCity和tblState。我想用从下拉列表中选择的州和城市注册用户,但在注册时,我已在tblUser中保存了特定州和城市的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);
    }



}
}

View 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>
试试这个

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

你有错误吗?实际上发生了什么?@Mike Cheel:不,我没有收到任何错误,我想在列表页面中显示州和城市的名称,但我已经在数据库中保存了它们的Id…:我的模型没有包含州和城市的名称,因为我正在数据库中保存它们的Id。所以我不能访问名字,因为我在数据库中有来自Forign的名字idTable@Anand拉詹:是的,在多个表之间的控制器中使用连接查询,我能够在列表页面上显示州和城市名称,因为我已经在表中存储了继承人ID,但通过连接查询,我使它工作了。。。
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>
    }