ASP.Net中的远程validationMVC 3:如何在Action Method中使用AdditionalFields

我一直在使用新的ASP.Net MVC 3 RemoteAttribute发送远程调用一个具有单一参数的操作方法。 现在我想使用AdditionalFields属性传入第二个参数:

[Remote("IsEmailAvailable", "Users", AdditionalFields = "InitialEmail")] 

IntialEmail是视图中的隐藏字段。 行动看起来像这样:

 public JsonResult IsEmailAvailable( string email, string InitialEmail) { //etc. } 

当呈现视图时,隐藏的字段被填充,但是当远程触发Action方法时,该值是一个空string。

我在其他地方见过大小写敏感可能是一个问题,所以我确保了Action方法对于这两个参数都有相同的情况。

还有其他build议吗? 这个附加字段曾经被称为字段。

谢谢,

Beaudetious

奇怪。 它适用于我:

模型:

 public class MyViewModel { [Required] [Remote("IsEmailAvailable", "Home", AdditionalFields = "InitialEmail")] public string Email { get; set; } } 

控制器:

 public class HomeController : Controller { public ActionResult Index() { return View(new MyViewModel()); } [HttpPost] public ActionResult Index(MyViewModel model) { return View(model); } public ActionResult IsEmailAvailable(string email, string initialEmail) { return Json(false, JsonRequestBehavior.AllowGet); } } 

视图:

 @model AppName.Models.MyViewModel @{ ViewBag.Title = "Home Page"; } <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> @using (Html.BeginForm()) { @Html.TextBoxFor(x => x.Email) @Html.ValidationMessageFor(x => x.Email) <input type="hidden" name="InitialEmail" value="foo@bar.com" /> <input type="submit" value="OK" /> } 

IIRC在ASP.NET MVC 3 RC2中有一些错误,这个远程validation在RTM中已经修复。

你的隐藏字段必须与你正在validation的字段(如Darin的例子)一样,否则隐藏字段的值将不会作为参数发送到validation操作方法“public ActionResult IsEmailAvailable(string email,string initialEmail )”

函数IsEmailAvailable(string电子邮件,string初始邮件)参数电子邮件应该作为电子邮件,完全相同的物业电子邮件。