我一直在使用新的ASP.Net MVC 3 RemoteAttribute发送远程调用到一个action方法,有一个单一的参数。现在我想使用AdditionalFields属性传递第二个参数:
[Remote("IsEmailAvailable","Users",AdditionalFields = "InitialEmail")]
其中IntialEmail是视图中的隐藏字段。操作如下所示:
public JsonResult IsEmailAvailable( string email,string InitialEmail) { //etc. }
当呈现视图时,将填充隐藏字段,但当远程触发Action方法时,该值为空字符串。
我已经看到其他情况下的敏感性可能是一个问题,所以我确保Action方法有两个参数相同的情况。
任何其他建议?这个AdditionalFields以前称为Fields。
谢谢,
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中有一些错误,这个远程验证是在RTM中修复的。