Asp.net mvc mvc中基于远程验证的错误

Asp.net mvc mvc中基于远程验证的错误,asp.net-mvc,razor,Asp.net Mvc,Razor,这是我的控制器代码: [AcceptVerbs(HttpVerbs.Post)] public JsonResult CheckBuildingName() { var isUnique = true; string _buildingName = Request.Form["buildingName"]; // put your control name here var connectionstring = Connect

这是我的控制器代码:

   [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult CheckBuildingName()
    {
        var isUnique = true;
        string _buildingName = Request.Form["buildingName"]; // put your control name here
        var connectionstring = ConnectionProvider();
        AddBuildingModel model = new AddBuildingModel();
        using (var context = new Notifier.AccountDatabase(connectionstring))
        {
            var objBuilding = (from building in context.Buildings
                               where building.buildingName == model.buildingName && building.buildingActive == true
                               select building).FirstOrDefault();

            if (objBuilding == null)
            {
                isUnique = true;


            }
            else
            {
                isUnique = false;
            }
        }
        if (isUnique == false)
        {
            return Json("Building already taken, Pleaes try with different name.", JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }
    }
}
我的模型如下:

[System.ComponentModel.DisplayName("buildingName")]
[Remote("CheckBuildingName", "ConfigLocationController",ErrorMessage = "Building already exists!")]
public string buildingName { get; set; }

我在这方面有错误。找不到控制器路径或未实现IController。这是什么意思。我错过什么了吗?还是我的代码完全错了?请帮助错误原因是您的
RemoteAttribute
正在调用
ConfigLocationControllerController
CheckBuildingName
方法。假设您的控制器实际命名为
ConfigLocationController
,那么您的属性需要

[Display(Name = "Building Name")] // use this attribute, not DisplayName
[Remote("CheckBuildingName", "ConfigLocation",ErrorMessage = "Building already exists!")]
public string buildingName { get; set; }
但是,您的方法也包含错误。初始化模型的新实例,然后在查询中使用其
buildingName
属性的值(该属性将为
null
),因此它将始终返回
null
。另外,您应该为ajax调用提交的值添加一个参数,而不是使用
Request.Form
。您可以简单地使用该方法

[HttpPost]
public JsonResult CheckBuildingName(string buildingName)
{
    bool exists = context.Buildings.Any(x => x.buildingName == buildingName && x.buildingActive);
    return Json(!exists, JsonRequestBehavior.AllowGet);
}

如果不存在匹配项,则返回
true
,如果存在匹配项,则返回
false
,在这种情况下,假设包含
@Html.ValidationMessageFor(m=>m.buildingName),则您在属性中定义的消息将显示在视图中

如果控制器是
ConfigLocationController
,则其
[远程(“CheckBuildingName”、“ConfigLocation”、ErrorMessage…)
(而不是
“ConfigLocationController”
)且不使用
请求。表单
-将方法更改为
公共JsonResult CheckBuildingName(string buildingName)
如果更改函数参数,应如何在模型中写入该参数?请告诉我,因为我是新生。你可以简单地使用
boolexists=context.Buildings.Any(x=>x.buildingName==buildingName&&x.buildingActive);返回Json(!exists,JsonRequestBehavior.AllowGet)什么型号?(您有什么
AddBuildingModel=new AddBuildingModel();
for-这是一个新实例和
model.buildingName
将为
null
,因此您的代码永远不会工作)。
string buildingName
参数的值将包含文本框的值。