小编Adr*_*lid的帖子

如何设置$ jQval.unobtrusive.options ErrorPlacement函数correclty

在jquery.validate.unobtrusive中覆盖ErrorPlacement函数的正确方法是什么?

纵观jquery.validate.unobtrusive.js脚本看来,开发商有意将允许您通过设置$ jQval.unobtrusive.options应用自己的ErrorPlacement功能.

在定义errorPlacement函数的validationInfo(form)函数中,我们看到对execInContext("errorPlacement",arguments)的调用.

看来如果我们在$ .validator.unobtrusive.options下创建一个errorPlacement函数,那么就会调用它.

   $.validator.unobtrusive.options = {
        errorPlacement: function () {
            console.log("hello");
        }
    };
Run Code Online (Sandbox Code Playgroud)

问题是必须在jquery.validate.js之后和引用jquery.validate.unobtrusive.js之前配置它.否则$ jQval.unobtrusive.options为null,并且不会再次设置$ form.data(data_validation,result).

    function validationInfo(form) {
    var $form = $(form),
        result = $form.data(data_validation),
        onResetProxy = $.proxy(onReset, form),
        defaultOptions = $jQval.unobtrusive.options || {},
        execInContext = function (name, args) {
            var func = defaultOptions[name];
            func && $.isFunction(func) && func.apply(form, args);
        }

    if (!result) {
        result = {
            options: {  // options structure passed to jQuery Validate's validate() method
                errorClass: defaultOptions.errorClass || "input-validation-error",
                errorElement: defaultOptions.errorElement || "span", …
Run Code Online (Sandbox Code Playgroud)

jquery unobtrusive-validation

5
推荐指数
1
解决办法
1807
查看次数

带有句点的ASP.NET MVC路由值ID

我有一个MVC5 Web应用程序,其中一些ID可以包含句点字符.

例如

这工作正常 http://www.website.com/Employee/Details/123

这将失败 http://www.website.com/Employee/Details/123.45

但这样可以正常工作 http://www.website.com/Employee/Details/?id=123.45

类似的问题:

目前我找到的所有解决方案都在上面的链接中描述.

  1. <httpRuntime relaxedUrlToFileSystemMapping="true" />

  2. <add name="UrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="Remote.mvc/*" verb="GET"/>

由于用户只会通过网页中的菜单和链接浏览这些网址,我希望ActionLink html帮助程序能够足够聪明地呈现?id = 123.45,因为它识别出Id包含Id路由值的不安全字符.

或者有没有办法强制ActionLink html助手始终在查询字符串中呈现Id路由值?

更新 我找不到任何参数来强制ActionLink呈现?id =查询字符串参数,所以我找到了2个可能的解决方案.

解决方案1

创建一个html帮助器来生成url.任何有关此代码的改进意见将不胜感激.

        public static MvcHtmlString ActionLinkSafeId(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
    {

        var routeValuesDictionary = new RouteValueDictionary(routeValues);
        MvcHtmlString link = htmlHelper.ActionLink(linkText, actionName, controllerName, routeValues, htmlAttributes);
        if (routeValuesDictionary.ContainsKey("id") && routeValuesDictionary["id"].ToString().Contains('.'))
        {
            if (routeValuesDictionary.Count == 1)
            {
                var searchValue = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-5

2
推荐指数
1
解决办法
1321
查看次数