JsonResult回归“未定义”

时间:2017-03-22 10:21:40

标签: jquery asp.net-mvc validation jsonresult

Hello在MVC应用程序中我在AccountController.cs中有以下函数:

public JsonResult IsAvailableUN(string Username)
{
    return Json(!Conn.Accounts.Any(Accounts => Accounts.Username == Username), JsonRequestBehavior.AllowGet);
}

其中Conn是我的连接,Accounts是表格,模型的名称和Username是文本框中的字符串和表格的列名。

Accounts模型中,我在公共字符串Username上方有以下配置:

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]

在我的观看中,我添加了必需的jquery.validate.min.jsjquery.validate.unobtrusive.min.js

这应该触发我的Username文本框,通过输入现有用户名并点击tab后缀来提供错误,但是,浏览器的控制台会返回:

Uncaught SyntaxError: Unexpected token u in JSON at position 0
at Function.parse [as parseJSON] (<anonymous>)
at HTMLFormElement.l (jquery.validate.unobtrusive.min.js:5)
at Object.e [as errorPlacement] (jquery-3.1.1.min.js:2)
at c.validator.showLabel (jquery.validate.min.js:36)
at c.validator.defaultShowErrors (jquery.validate.min.js:34)
at c.validator.showErrors (jquery.validate.min.js:28)
at Object.success (jquery.validate.min.js:46)
at i (jquery-3.1.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.1.1.min.js:2)
at A (jquery-3.1.1.min.js:4)

我的返回json只包含1个单词:undefined

我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:0)

您的方法应该具有相同的参数,例如具有远程验证的属性。

检查你的房产名称。它应该是

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]
public string Username{get;set;} //Same as function parameter

返回应该是匿名类型。不是普通的真/假

var anonymous =new {
  result=true;
};

return Json(anonymous , JsonRequestBehavior.AllowGet);

答案 1 :(得分:0)

!Conn.Accounts.Any(Accounts =&gt; Accounts.Username == Username)将返回布尔值(不是对象)。

它应该是json对象{&#34; propertyName&#34; :&#34;价值&#34; }。在你的情况下它应该是

 { "propertyName" : true } 

{ "propertyName" : false}

您可以使用

 var isValid = !Conn.Accounts.Any(Accounts => Accounts.Username == Username);
 return Json(new { Valid = isValid }, JsonRequestBehavior.AllowGet);

答案 2 :(得分:0)

XCUIElement.isSelected

尝试这样。它应该是work.you应该返回数据作为JSON对象而不是布尔变量