Несколько записей в подробном представлении - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть база данных с таблицей Patient.На мой взгляд, у меня есть:

<h2>Search by Patient_Name</h2>

@using (@Html.BeginForm("DetailsbyName", "Patient"))
{    
@Html.Label("First Name")
@Html.TextBoxFor(model => model.First_Name)
<br />
@Html.Label("Last Name")
@Html.TextBoxFor(model => model.Last_Name)

<input type="submit", value="Submit"/>}

В моем контроллере используется следующий метод:

public ActionResult DetailsbyName(Patient _patient)
        {
            string Fname = _patient.First_Name;
            string Lname = _patient.Last_Name;

            try
            {
            Patient patient = db.Patients.Single(p => p.First_Name == Fname);
            patient = db.Patients.Single(p => p.Last_Name == Lname);

                return View(patient);
            }
            catch
            {
                return RedirectToAction("About", "Home");
            }
        }

Когда пользователь вводит имя или фамилию, которые встречаются более одного раза в таблице базы данныхdb.Patients.Single вызывает исключение.Что я мог бы использовать, кроме .Single, чтобы справиться с этим?

Например, пользователь вводит Имя: Джон Фамилия: Смит Если в базе данных есть несколько раз «Джон», я в настоящее время получаю исключение.Или, если в БД есть более одного «Смита» в качестве фамилии, я получаю исключение.

Спасибо.

Получил работу с этим:

List<Patient> patientList = db.Patients.Where(p => p.Last_Name == Lname || p.First_Name == Fname).ToList(); 

            return View(patientList);

Спасибоза помощь!

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Я думаю, что решение о том, что делать при возврате нескольких записей, остается за вами.Вы можете сделать так, чтобы модель вашего Представления была списком и отображать все из них в вашем представлении.

Тогда вы бы получили:

List<Patient> patientList = db.Patients.Where(p => p.Last_Name = LName || p.First_Name = FName).ToList();
0 голосов
/ 03 декабря 2011

попробуйте db.patients.where (p => p.LastName = LName), то же самое для FName. И вам нужно будет пересмотреть это как список, так как может быть более одной записи.

...