我有一个名为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);
感谢您的帮助!
答案 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();