加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.Net MVC 3中的远程验证:如何在Action方法中

发布时间:2020-12-15 19:13:40 所属栏目:asp.Net 来源:网络整理
导读:我一直在使用新的ASP.Net MVC 3 RemoteAttribute发送远程调用到一个action方法,有一个单一的参数。现在我想使用AdditionalFields属性传递第二个参数: [Remote("IsEmailAvailable","Users",AdditionalFields = "InitialEmail")] 其中IntialEmail是视图中的
我一直在使用新的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中修复的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读