我在教师控制器的更新操作中实现了基本的服务器端验证,以检查某些字段(例如 TeacherFname、TeacherLname、EmployeeNumber、HireDate 和 Salary)是否为空或 null 值。
[HttpPost]
public ActionResult Update(int id, string TeacherFname, string TeacherLname, string EmployeeNumber, DateTime? HireDate, decimal? Salary)
{
if (string.IsNullOrEmpty(TeacherFname) || string.IsNullOrEmpty(TeacherLname) || string.IsNullOrEmpty(EmployeeNumber) || HireDate == null || Salary == null)
{
ViewBag.Error = "All fields are required.";
return View("Update");
}
Teacher UpdatedTeacher = new Teacher();
UpdatedTeacher.teacherfname = TeacherFname;
UpdatedTeacher.teacherlname = TeacherLname;
UpdatedTeacher.employeenum = EmployeeNumber;
UpdatedTeacher.hiredate = (DateTime)HireDate;
UpdatedTeacher.salary = Salary ?? 0;
TeacherDataController controller = new TeacherDataController();
controller.UpdateTeacher(id, UpdatedTeacher);
return RedirectToAction("Show/" + id);
}
我添加了一个 if 语句,但它不适用于 Hiredate 和 Salary。我希望如果用户更新表单服务器应该检查字段是否为空。
您可以使用可空对象的
HasValue
属性。在您的情况下,可为 null 的对象是 HireDate
和 Salary
,因此您可以将条件更改为:
if (string.IsNullOrEmpty(TeacherFname) || string.IsNullOrEmpty(TeacherLname) || string.IsNullOrEmpty(EmployeeNumber) || !HireDate.HasValue || !Salary.HasValue)
{
ViewBag.Error = "All fields are required.";
return View("Update");
}
在上述条件下,
HasValue
属性根据 Nullable 变量是否有某个值返回一个 bool 值。如果变量有某个值,则返回 true;否则,如果没有值或为 null,则返回 false。