详细信息视图中的多个记录

时间:2011-12-02 23:34:23

标签: database asp.net-mvc-3 controller detailsview

我有一个名为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之外我还可以使用什么来处理这个问题?

例如,用户输入名字:约翰                            姓氏:史密斯 如果数据库不止一次“约翰”,我目前得到一个例外。或者,如果数据库有多个“Smith”作为姓氏,我会得到一个例外。

感谢。

使用它:

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

            return View(patientList);

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试db.patients.where(p =&gt; p.LastName = LName),对于FName也是如此。而且您需要将此作为列表重新计算,因为可能有多个条目。

答案 1 :(得分:0)

我认为在返回多条记录时做出决定取决于您。您可以将View的模型设为List,并在视图中显示所有这些模型。

然后你会:

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