我想编辑和添加多个表中的数据。 我开始在这个解决方案中说: How do I display data from multiple tables in a single MVC view
我有3个模特:uzytkownik,rolaPowiazanie和rola。在“uzytkownik”和“rolaPowiazanie”之间是“rolaPowiazanie”和“rola” - “rolaId”之间的连接“idUzytkownik”。我想在表格中显示“uzytkownik”和“rola”的信息。
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.nazwaRoli)
</th>
(...)
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.nazwaRoli)
</td>
(...)
DisplayNameFor给出“nazwaRoli”,但DisplayFor(modelItem =&gt; item.nazwaRoli)给出“idRola”。当我想在idRola的视图项目中看到时,也有idRola。
我把它添加到控制器中:
public ActionResult Index()
{
IEnumerable<UzytkownicyRola> model = null;
List<UzytkownicyRola> verify = new List<UzytkownicyRola>();
var connection = System.Configuration.ConfigurationManager.ConnectionStrings["AplikacjaContext"].ConnectionString;
using (var cn = new SqlConnection(connection))
{
cn.Open();
if (cn.State == ConnectionState.Open)
{
string query = "select uzytkownik.idUzytkownik,uzytkownik.imie,uzytkownik.nazwisko,uzytkownik.pesel,uzytkownik.haslo,uzytkownik.email,rolaPowiazanie.idUzytkownik,rolaPowiazanie.idRola,rola.idRola,rola.nazwaRoli from uzytkownik inner join rolaPowiazanie on uzytkownik.idUzytkownik=rolaPowiazanie.idUzytkownik inner join rola on rolaPowiazanie.idRola=rola.idRola;";
SqlCommand cmd = new SqlCommand(query, cn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
verify.Add(new UzytkownicyRola { idUzytkownik = Convert.ToInt32(dr[0].ToString()), imie = dr[1].ToString(), nazwisko = dr[2].ToString(), pesel = dr[3].ToString(), haslo = dr[4].ToString(), email = dr[5].ToString(), idRolaPowiazanie = Convert.ToInt32(dr[6].ToString()), idRola = Convert.ToInt32(dr[7].ToString()), nazwaRoli = dr[8].ToString() });
}
}
cn.Close();
return View(verify);
}
}
在视图中,当我想要显示“nazwaRoli”时,我会得到“idRola”。我应该改变什么来改正节目“nazwaRoli”?
自动生成的编辑外观如下:
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
UzytkownicyRola uzytkownicyRola = db.UzytkownicyRolas.Find(id);
if (uzytkownicyRola == null)
{
return HttpNotFound();
}
return View(uzytkownicyRola);
}
- EDIT-- 我也遇到了编辑和细节方面的问题。
有一个错误:
System.Data.SqlClient.SqlException:无效的对象名称'dbo.UzytkownicyRolas'。
错误来源:
UzytkownicyRola uzytkownicyRola = db.UzytkownicyRolas.Find(id);
“UzytkownicyRolas”仅存在于AplikacjaContext(我之前创建的DbContext)中,并且位于DAL文件夹中。 如何将此更改为此方法有效?
AplikacjaContext'c代码:
public partial class AplikacjaContext : DbContext
{
public AplikacjaContext()
: base("name=AplikacjaContext")
{
}
public virtual DbSet<rola> rola { get; set; }
public virtual DbSet<rolaPowiazanie> rolaPowiazanie { get; set; }
public virtual DbSet<uzytkownik> uzytkownik { get; set; }
public System.Data.Entity.DbSet<Aplikacja.Models.UzytkownicyRola> UzytkownicyRolas { get; set; }
}
答案 0 :(得分:0)
序号:8上的dr(:SqlDataReader)将获得&#34; idRola&#34;在你的SQL中。
select
uzytkownik.idUzytkownik,--0
uzytkownik.imie,--1
uzytkownik.nazwisko,--2
uzytkownik.pesel,--3
uzytkownik.haslo,--4
uzytkownik.email,--5
rolaPowiazanie.idUzytkownik,--6
rolaPowiazanie.idRola,--7
rola.idRola,--8
rola.nazwaRoli --9
...
在SqlDataReader上使用列名将更具可读性,就像这样...
nazwaRoli = dr["nazwaRoli"].ToString();
请检查您是否在课程上有正确的参考:&#34; UzytkownicyRola&#34;,错误不在&#34; UzytkownicyRola s &#34;