Как отобразить данные, связанные с внешним ключом, в виде бритвы в MVC, используя Ado.Net - PullRequest
0 голосов
/ 23 мая 2018

вот мой класс

 public class Student
{
    public int StudentId { get; set; }

    public string Name { get; set; }

    public int DeptId { get; set; }

    public Dept Dept { get; set; }
}

Для показа списка я использую ado.net.вот мой контроллер:

 public ActionResult Index()
    {
        StudentRepo repo = new StudentRepo();
        List<Student> students = repo.GetStudent().ToList();
        return View(students);
    }

Метод GetStudent

public List<Student> GetStudent()
    {
        connection();
        List<Student> stdList = new List<Student>();


        SqlCommand com = new SqlCommand("Sp_GetStudent", con);
        com.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(com);
        DataTable dt = new DataTable();

        con.Open();
        da.Fill(dt);
        con.Close();

        foreach (DataRow dr in dt.Rows)
        {
            Dept dpt = new Dept();


            dpt.DeptId = Convert.ToInt32(dr["DeptId"]);// here found student Id 
            dpt.Name = Convert.ToString(dr["Name"]);// here found student name 


            stdList.Add(
                new Student
                {
                    StudentId = Convert.ToInt32(dr["StudentId"]),
                    Name = Convert.ToString(dr["Name"]),
                    Roll = Convert.ToString(dr["Roll"]),
                    DeptId = Convert.ToInt32(dr["DeptId"]),
                    Dept = dpt
                }
                );


        }

        return stdList;
    }

, а бритва:

 @foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Roll)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Dept.Name)
    </td>
</tr>

}

Процедура сохранения:

select StudentTbl.StudentId,StudentTbl.Name,StudentTbl.ROll, StudentTbl.DeptId,DeptTbl.Name
from  Demo.dbo.StudentTbl inner join 
Demo.dbo.DeptTbl ON  StudentTbl.DeptId = DeptTbl.DeptId 

В настоящее время отображается идентификатор отдела.Теперь проблема в списке, я не знаю, как показать название отдела.Как я могу этого достичь?Любая помощь будет принята с благодарностью.

Редактировать: Теперь, когда я связываю данные Dept в объекте dpt, он находит StudentTbl Id & Name

1 Ответ

0 голосов
/ 24 мая 2018

Обычное решение этой проблемы - использовать псевдонимы для имен столбцов, чтобы сделать их уникальными:

select 
  StudentTbl.StudentId,
  StudentTbl.Name as StudentName,
  StudentTbl.ROll, 
  StudentTbl.DeptId,DeptTbl.Name as DeptName 

, а затем, конечно, изменить свой код C # в соответствии с новыми псевдонимами:

dpt.Name = Convert.ToString(dr["DeptName"]);

и

Name = Convert.ToString(dr["StudentName"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...