C# 显示数据库中的名称,同时存储state city mvc的id
我正在使用ASP.Net Mvc4,我有3个表namd tblUser、tblCity和tblState。我想用从下拉列表中选择的州和城市注册用户,但在注册时,我已在tblUser中保存了特定州和城市的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
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>
}