如何在C#中增强服务器端表单验证以更新表单?

问题描述 投票:0回答:1

我在教师控制器的更新操作中实现了基本的服务器端验证,以检查某些字段(例如 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。我希望如果用户更新表单服务器应该检查字段是否为空。

c# asp.net validation server-side-validation
1个回答
0
投票

您可以使用可空对象的

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。

© www.soinside.com 2019 - 2024. All rights reserved.