MVC3中的远程验证,出现空值问题



我的模型类如下:

public class Employee
{
    public Guid ID { get; set; }
    [Required]
    [Remote("CheckName","Employee",ErrorMessage="Already Exists...!")]
    public String EmployeeName { get; set; }
    public String EmployeeAddress { get; set; }
    [Required]
    public DateTime DateOfBirth { get; set; }
    public decimal Salary { get; set; }
    public String Department { get; set; }
    public DateTime HireDate { get; set; }
}

我在控制器中的操作如下:

  [HttpGet]
    public JsonResult CheckName(string Name)
    {
        return Json(Name.Equals("MyString"), JsonRequestBehavior.AllowGet);
    }

当我执行此操作时,我得到以下异常

NullReferenceException:对象引用未设置为对象的n个实例

在视图中,表单包含一个文本框和一个提交按钮。如果你不清楚这些事情,请让我知道执行远程验证。

不确定如何呈现有问题的文本框,但如果您使用:

@Html.TextboxFor(x => x.EmployeeName) // or
@Html.EditorFor(x => x.EmployeeName) // or
@Html.Textbox("EmployeeName")

输入的字段名称将被呈现为<input name="EmployeeName"/>并且模型绑定将无法将其解析为CheckName方法的Name参数,从而尝试执行

Name.Equals("MyString")

而Name为null并导致NullReferenceException。如果将CheckName方法的参数名称更改为EmployeeName,则会导致模型绑定将参数解析为文本框的名称。

这一切都取决于我对形势的理解和做出一些假设。

最新更新