Я создаю свой первый проект с использованием asp.net MVC - я успешно подключился к базе данных и отобразил информацию на странице индекса. У меня вопрос: как получить более одного результата запроса на одной странице индекса?
например,

SELECT student ID,first name,surname FROM STUDENT Notes WHERE student ID = 7

Нужно ли создавать новые контроллеры / модели для каждого запроса или нужно добавить к текущему, и если я добавлю к текущему, как бы я это сделал? Ниже приведен код, который у меня есть в моем контроллере.

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        //int sNumber = 1;
        List<CustomerModel> customers = new List<CustomerModel>();
        string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {

            string query = "SELECT title, `first name`, surname FROM `STUDENT REGISTER`";
            using (MySqlCommand cmd = new MySqlCommand(query))
            {
                cmd.Connection = con;
                con.Open();
                using (MySqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        customers.Add(new CustomerModel
                        {
                            // CustomerId = Convert.ToInt32(sdr["Student Number"]),
                            Title = sdr["title"].ToString(),
                            Name = sdr["first name"].ToString(),
                            Surname = sdr["surname"].ToString()
                        });
                    }
                }                

                con.Close();
            }
        }

        return View(customers);
    }
0
Michael 3 Мар 2018 в 06:05

3 ответа

Лучший ответ

Вы должны создать новый класс со всеми свойствами, которые вы хотите отобразить в вашем представлении.

< Сильный > Пример:

public class StudentModel {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Name { get; set; }
        public strign Surname { get; set; }
    }
    public class MarkModel {
        public int Id { get; set; }
        public int StudentId { get; set; }
        public int SubjectId { get; set; }
        public int Mark { get; set; }
    }
    public class ResultModel
    {

      public StudentModel Student { get; set; }

      public List<MarkModel> Marks { get; set; }

    }

    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            //int sNumber = 1;
           var model= new ResultModel{
              Student = new StudentModel(),
              Marks = new List<MarkModel>();
           }

            string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(constr))
            {
                string queryStudent = "SELECT id, title, `first name`, surname FROM `STUDENT` WHERE Id=1";
                using (MySqlCommand cmd = new MySqlCommand(queryStudent))
                {
                    cmd.Connection = con;               
                    using (MySqlDataReader sdr = cmd.ExecuteReader())
                    {
                        while (sdr.Read())
                        {    
                               model.student.Id = Convert.ToInt32(sdr["id"]),
                               model.student.Title = sdr["title"].ToString(),
                               model.student.Name = sdr["first name"].ToString(),
                               model.student.Surname = sdr["surname"].ToString()                     
                        }
                    }               
                }

                string queryMarks = "SELECT Id, `StudentId`, StudentId,Mark FROM `MARK` WHERE StudentId=1";
                using (MySqlCommand cmd = new MySqlCommand(queryMarks))
                {
                    cmd.Connection = con;               
                    using (MySqlDataReader sdr = cmd.ExecuteReader())
                    {
                        while (sdr.Read())
                        {
                            model.Marks.Add(new MarkModel
                            {
                               Id = Convert.ToInt32(sdr["Id"]),
                               StudentId = Convert.ToInt32(sdr["StudentId"]),
                               StudentId = Convert.ToInt32(sdr["StudentId"]),
                               Mark = Convert.ToInt32(sdr["Mark"]),
                            });
                        }
                    }               
                } 
            }

            return View(model);
        }
0
Ashiquzzaman 3 Мар 2018 в 09:55

Вы должны создать новый класс ViewModel со всеми свойствами, которые вы хотите отобразить в вашем View. Затем вы моделируете свой вид после него.

Из предоставленных вами свойств класс должен выглядеть следующим образом:

public class StudentViewModel {
    public int Id { get; set; }
    public string Title { get; set; }
    public string Name { get; set; }
    public strign Surname { get; set; }
}

Затем вы делаете значение х присваивание свойства

string query = "SELECT title, `first name`, surname FROM `STUDENT REGISTER`";
List<StudentViewModel> model = new List<StudentViewModel>();

using (MySqlCommand cmd = new MySqlCommand(query)) {
    cmd.Connection = con;
    con.Open();
    using (MySqlDataReader sdr = cmd.ExecuteReader())
    {
        while (sdr.Read())
        {
            model.Add(new StudentViewModel
            {
                Id = Convert.ToInt32(sdr["StudentNumber"]),
                Title = Convert.ToString(sdr["title"]),
                Name = Convert.ToString(sdr["first name"]),
                Surname = Convert.ToString(sdr["surname"])
            });
        }
    }

    con.Close();
}

return View(model);
0
Tiramonium 3 Мар 2018 в 03:38

Создайте модель представления с двумя наборами результатов, например, для Студент и Знаки

public class Result
{

  public Student Student { get; set; }

  public Marks Marks { get; set; }

}

Загрузите / сконструируйте эту модель представления результатов в контроллере / службе с соответствующими данными и передайте эту модель представления для просмотра. Надеюсь, это поможет!

1
user9405863 3 Мар 2018 в 03:29