Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.NET MVC 3中带DropDownList的远程验证程序_Asp.net Mvc 3_Drop Down Menu_Jquery Validate - Fatal编程技术网

Asp.net mvc 3 ASP.NET MVC 3中带DropDownList的远程验证程序

Asp.net mvc 3 ASP.NET MVC 3中带DropDownList的远程验证程序,asp.net-mvc-3,drop-down-menu,jquery-validate,Asp.net Mvc 3,Drop Down Menu,Jquery Validate,我正在尝试(未成功)在DropDownList上使用远程验证程序: // Person.cs public int PersonID { get; set; } public string Name { get; set; } // Card.cs public int CardID { get; set; } [Remote("PersonValidation", "Validation", ErrorMessage = "...")] public int PersonID { get;

我正在尝试(未成功)在DropDownList上使用远程验证程序:

// Person.cs
public int PersonID { get; set; }
public string Name { get; set; }

// Card.cs
public int CardID { get; set; }
[Remote("PersonValidation", "Validation", ErrorMessage = "...")]
public int PersonID { get; set; }
public virtual Person Person { get; set; }

// CardController
public ActionResult Create()
{
    ViewBag.PersonID = new SelectList(db.Persons, "PersonID", "Name");
    Card card = new Card();
    return View(card);
} 

// create.cshtml (Card Views)
<div class="editor-label">@Html.LabelFor(model => model.personID, "Person")</div>
<div class="editor-field">
    @Html.DropDownList("PersonID", String.Empty)
    @Html.ValidationMessageFor(model => model.PersonID)
</div>

// ValidationController.cs
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
public JsonResult PersonValidation(int id)
{
    Person person = db.Persons.Find(id);
    return Json(person.Cards.Count > 0, JsonRequestBehavior.AllowGet);
}
//Person.cs
公共int PersonID{get;set;}
公共字符串名称{get;set;}
//信用卡
公共int-CardID{get;set;}
[远程(“PersonValidation”、“Validation”、ErrorMessage=“…”)]
公共int PersonID{get;set;}
公共虚拟人{get;set;}
//卡片控制器
公共操作结果创建()
{
ViewBag.PersonID=新的选择列表(db.Persons,“PersonID”,“Name”);
卡片=新卡片();
返回视图(卡片);
} 
//create.cshtml(卡片视图)
@Html.LabelFor(model=>model.personID,“Person”)
@DropDownList(“PersonID”,String.Empty)
@Html.ValidationMessageFor(model=>model.PersonID)
//ValidationController.cs
[OutputCache(Location=OutputCacheLocation.None,NoStore=true)]
公共JsonResult PersonValidation(int id)
{
Person-Person=db.Persons.Find(id);
返回Json(person.Cards.Count>0,JsonRequestBehavior.AllowGet);
}
PersonValidation永远不会被解雇。其他带有文本输入的“远程”验证工作正常。 我是否做错了什么,或者DropDownList远程验证是否存在问题


谢谢

验证器不会启动,因为您需要使用
@Html.DropDownListFor()
来创建包含“data val”元素的Html元素,这些元素将被解析为不引人注目的验证器。

对不起,顾问本,我尝试使用@Html.DropDownListFor(model=>model.PersonID,null,”),但该字段仍然没有客户端验证。你能帮我一下吗?如果你看一下生成的HTML,元素是否包含
data val=“true”
?如果不是,则DropDownList存在不发出不引人注目的验证属性的问题。见AAA BBB CCC