WebForms UnobtrusiveValidationMode को 'jquery' के लिए ScriptResourceMapping की आवश्यकता होती है। कृपया एक स्क्रिप्ट जोड़ें। स्रोत नामकरण jquery (केस-संवेदी)


305

मैं विजुअल स्टूडियो 2012 का उपयोग करके एक वेब एप्लिकेशन बना रहा हूं। मैं अपने टेक्स्टबॉक्स में शब्द गणना जोड़ने का प्रयास कर रहा हूं। हालाँकि जावास्क्रिप्ट कोड और html कोड जोड़ने के बाद। जैसा कि ऊपर कहा गया है, मैं त्रुटि प्राप्त करता हूं।

यहाँ मेरे जावास्क्रिप्ट कोडेक्स है

कोड:

function validateLimit(obj, divID, maxchar) {

objDiv = get_object(divID);

if (this.id) obj = this;

var remaningChar = maxchar - trimEnter(obj.value).length;

if (objDiv.id) {
    objDiv.innerHTML = remaningChar + " characters left";
}
if (remaningChar <= 0) {
    obj.value = obj.value.substring(maxchar, 0);
    if (objDiv.id) {
        objDiv.innerHTML = "0 characters left";
    }
    return false;
}
else
{ return true; }
}

function get_object(id) {
var object = null;
if (document.layers) {
    object = document.layers[id];
} else if (document.all) {
    object = document.all[id];
} else if (document.getElementById) {
    object = document.getElementById(id);
}
return object;
}

function trimEnter(dataStr) {
return dataStr.replace(/(\r\n|\r|\n)/g, "");
}

मास्टर पेज में सर्वर कोड

<script type="text/javascript" src="js/JScript.js" ></script>

ASPX कोड, (Html ​​कोड)

<tr>
<th style="width: 595px; height: 135px;">Official Report :</th>
<td colspan="4" style="height: 135px">
  <asp:TextBox ID="tbofficial" runat="server" Height="121px" TextMode="MultiLine" Width="878px" MaxLength="500"   ToolTip="Summary:(500 characters)" onkeyup="return validateLimit(this, 'lblMsg1', 500)" ></asp:TextBox>
  <div id="lblMsg1">500 characters left</div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
        ControlToValidate="tbofficial" Display="Dynamic" 
        SetFocusOnError="True">*</asp:RequiredFieldValidator>
  <br />
  <asp:Label ID="lblmsg" runat="server"></asp:Label>
  <br />
  <br />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
  <asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" />
        </td>
</tr>

जवाबों:


576

पूर्व 4.5 सत्यापन मोड को सक्षम करने के लिए आपको एक web.config कुंजी की आवश्यकता है।

मान्यकरण के बारे में अधिक जानकारी : विनीत कथन :

निर्दिष्ट करता है कि ASP.NET विश्व स्तर पर क्लाइंट-साइड सत्यापन तर्क के लिए विनीत जावास्क्रिप्ट का उपयोग करने के लिए अंतर्निहित सत्यापनकर्ता नियंत्रण को कैसे सक्षम करता है।

प्रकार: विनीत विचलन

डिफ़ॉल्ट मूल्य: कोई नहीं

टिप्पणी: यदि यह महत्वपूर्ण मान "कोई नहीं" [डिफ़ॉल्ट] पर सेट है , तो ASP.NET एप्लिकेशन क्लाइंट-साइड सत्यापन तर्क के लिए पूर्व 4.5 व्यवहार (पृष्ठों में जावास्क्रिप्ट इनलाइन) का उपयोग करेगा । यदि यह मुख्य मान "WebForms" पर सेट है , तो ASP.NET क्लाइंट साइड सत्यापन तर्क के लिए एक अतिरिक्त स्क्रिप्ट संदर्भ से HTML5 डेटा-विशेषताओं और देर से बाध्य जावास्क्रिप्ट का उपयोग करता है।

उदाहरण:

    <appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    </appSettings>

14
यह एक मुद्दा भी क्यों है ... यह सिर्फ डिफ़ॉल्ट रूप से अक्षम क्यों नहीं किया जा सकता है? वैसे भी यह सक्षम कौन चाहेगा? जो भी उत्तर, मैंने इस कुंजी को जोड़ा और मुझे अभी भी त्रुटि मिल रही है ...
Ortund

40
ऐसा लगता है कि यदि आप उपयोग कर रहे हैं तो "कोई नहीं" डिफ़ॉल्ट नहीं है targetFramework="4.5"। मुझे इस सेटिंग को स्पष्ट रूप से अपने web.config में जोड़ने के लिए काम करना था।
जेसी वेब वेब

18
अनुस्मारक: <appSettings> वेब में जनक। कॉनफिग फ़ाइल मूल तत्व होनी चाहिए, वह है <कॉन्फ़िगरेशन>।
GY

4
मैंने .net 4.5.2 स्थापित किया और फिर मैं इस मुद्दे पर गिर गया। मुझे लगता है कि विंडोज़ अपडेट ने 4.5.2 के लिए मशीन कॉन्फ़िगरेशन को बदल दिया।
रेज.नेट

3
जब तक आप "सबसे बड़ा पृष्ठ आकार" प्रतियोगिता जीतने की कोशिश नहीं कर रहे हैं, आप विनीत मान्यता को क्यों निष्क्रिय करेंगे?
EKW

173

एक नई सुविधा को अक्षम करने के बजाय, मैंने त्रुटि के निर्देशों का पालन करने का विकल्प चुना। अपने Global.asax.cs में मैंने जोड़ा:

protected void Application_Start(object sender, EventArgs e)
{
    string JQueryVer = "1.7.1";
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
    {
        Path = "~/Scripts/jquery-" + JQueryVer + ".min.js",
        DebugPath = "~/Scripts/jquery-" + JQueryVer + ".js",
        CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
        CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
        CdnSupportsSecureConnection = true,
        LoadSuccessExpression = "window.jQuery"
    });
}

यह एक msdn ब्लॉग पोस्ट से आता है जो स्क्रिप्ट संसाधन मैपिंग के कुछ लाभों पर प्रकाश डालता है। मेरे लिए विशेष रूप से रुचि "डीबग = ट्रू", एएनपीसीडीएन इत्यादि के आधार पर स्क्रिप्ट फाइलों के वितरण पर केंद्रीकृत नियंत्रण की थी।


@b_levitt मैं .NET के लिए नया हूं और आपके द्वारा बताए गए समाधान के माध्यम से आया हूं। यह वास्तव में बहुत मदद करता है लेकिन सिर्फ उत्सुक है कि मैं jQuery फ़ंक्शन कैसे कह सकता हूं। उदाहरण के लिए, मेरे पास एक jQuery मेनू है और उपरोक्त विधि को लागू करने के बाद मैं उपयोग कर रहा हूं <script type='text/javascript'> //<![CDATA[ $(document).ready(function () { $("#menu").menu(); }) //]] </script>। क्या यह सही तरीका है?
यशमान गुप्ता

8
एक gist बनाया गया: gist.github.com/monoman/ca42e54cdac25ef2284b jQueryVer मान को हार्डकोड नहीं करके सुधारना;
मोनोमन

6
नोट: मैंने इन दोनों Nuget पैकेजों को जोड़ा और चीजें सुचारू हो गईं। उत्पादन सर्वर के लिए / बिन फ़ोल्डर में नई फ़ाइलों को कॉपी करना था .. nuget.org/packages/Microsoft.AspNet.Web.Optimization nuget.org/packages/AspNet.ScriptManager.jQuery
htm11x

1
आपके उपयोग के मामले पर निर्भर करता है कि कौन सा सही है। हमारे ऐप की कोई मान्यता नहीं है (विशुद्ध रूप से सामग्री वितरण) और हमने इसे बंद करना पसंद किया।
सामन्था ब्रंहम

93

क्लाइंट-साइड सत्यापन के लिए विनीत जावास्क्रिप्ट के उपयोग को अक्षम करने के कम से कम तीन तरीके हैं:

  1. निम्नलिखित को web.config फ़ाइल में जोड़ें:
    <configuration>
      <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
      </appSettings>
    </configuration>
  2. System.Web.UI.ValidationSettings.UnobtrusiveValidationModeस्थिर संपत्ति का मान सेट करेंSystem.Web.UI.UnobtrusiveValidationMode.None
  3. System.Web.UI.Page.UnobtrusiveValidationModeउदाहरण के लिए संपत्ति का मान सेट करेंSystem.Web.UI.UnobtrusiveValidationMode.None

प्रति पृष्ठ के आधार पर कार्यक्षमता को अक्षम करने के लिए, मैं Page.UnobtrusiveValidationModeपृष्ठ निर्देश का उपयोग करके संपत्ति सेट करना पसंद करता हूं :

<%@ Page Language="C#" UnobtrusiveValidationMode="None" %>

7
प्रति पृष्ठ सेटिंग पर अच्छा कॉल।
ब्रेंडन हैनीमैन

47

ASP.NET के नए संस्करण में डिफ़ॉल्ट रूप से विनीत सत्यापन सक्षम है। विनीत मान्यता का उद्देश्य jQuery का उपयोग करने वाली एक छोटी जावास्क्रिप्ट लाइब्रेरी के साथ सत्यापन करने के लिए इनलाइन जावास्क्रिप्ट को प्रतिस्थापित करके पृष्ठ के आकार को कम करना है।

आप निम्नलिखित को शामिल करने के लिए web.config को संपादित करके इसे या तो अक्षम कर सकते हैं:

<appSettings>
  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

या बेहतर अभी तक इसे ठीक से कॉन्फ़िगर करें Application_Start पद्धति को Global.asax में संशोधित करके:

void Application_Start(object sender, EventArgs e) 
{
    RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
        new ScriptResourceDefinition
        {
            Path = "/~Scripts/jquery-2.1.1.min.js"
        }
    );
}

ASP.NET 4.5.1 की C # और VB में शुरुआत का पृष्ठ 399 विनीत मान्यता के लाभ और इसे कॉन्फ़िगर करने के लिए एक पूर्वाभ्यास पर चर्चा प्रदान करता है।

जो रूटकॉन्फिग की तलाश में हैं। जब आप App_Code फ़ोल्डर में दृश्य स्टूडियो में एक नया प्रोजेक्ट बनाते हैं तो यह स्वचालित रूप से जोड़ा जाता है। सामग्री कुछ इस तरह दिखती है:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Routing;
using Microsoft.AspNet.FriendlyUrls;

namespace @default
{
    public static class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Permanent;
            routes.EnableFriendlyUrls(settings);
        }
    }
}

RouteConfig कहाँ से आता है?
लुकास

@Lucas जब आप विज़ुअल स्टूडियो के साथ एक नया प्रोजेक्ट बनाते हैं, तो यह App_Code फ़ोल्डर में RouteConfig.cs जोड़ता है। संपादित उत्तर देखें।
डेववर

12

b_levitt से उत्तर के लिए थोड़ा और जोड़ने के लिए ... global.asax पर:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;

namespace LoginPage
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            string JQueryVer = "1.11.3";
            ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
            {
                Path = "~/js/jquery-" + JQueryVer + ".min.js",
                DebugPath = "~/js/jquery-" + JQueryVer + ".js",
                CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
                CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
                CdnSupportsSecureConnection = true,
                LoadSuccessExpression = "window.jQuery"
            });
        }
    }
}

अपने default.aspx पर

<body>
   <form id="UserSectionForm" runat="server">
     <asp:ScriptManager ID="ScriptManager" runat="server">
          <Scripts>
               <asp:ScriptReference Name="jquery" />
          </Scripts>
     </asp:ScriptManager>
     <%--rest of your markup goes here--%>         
   </form>
</body>

12

मेरा मानना ​​है कि मैंने एक ही चौका का सामना किया है। जब मैंने इस समस्या का सामना करना शुरू किया, तो मैं बदल गया:

</system.web>
<httpRuntime targetFramework="4.5"/>

जो आपको ऊपर वर्णित त्रुटि संदेश देता है।

जोड़ने:

<appSettings>
  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

समस्या हल करता है, लेकिन तब यह आपके सत्यापन नियंत्रण / स्क्रिप्ट जावास्क्रिप्ट रनटाइम त्रुटियों को फेंक देता है। यदि आप इसमें परिवर्तन करते हैं:

</system.web>
<httpRuntime targetFramework="4.0"/>

आपको ठीक होना चाहिए, लेकिन आपको यह सुनिश्चित करना होगा कि आपका बाकी कोड वांछित व्यवहार / व्यवहार करता है। आपको कुछ नई सुविधाएँ भी देनी पड़ सकती हैं जो केवल 4.5 पर उपलब्ध हैं।

पुनश्च यह अनुशंसा की जाती है कि आप इस समाधान को लागू करने से पहले पढ़ें। खासकर, यदि आप Async कार्यक्षमता का उपयोग करते हैं:

https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

अद्यतन अप्रैल 2017: कुछ प्रयोग और परीक्षण के बाद मैं एक संयोजन के साथ आया हूं जो काम करता है:

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
<httpRuntime targetFramework="4.5.1" />

साथ में:

jQuery का संस्करण 1.11.3


6

नियंत्रण सत्यापनकर्ता के कारण समस्या हुई। बस अपने वेब पेज पर जे क्वेरी का संदर्भ इस प्रकार जोड़ें और फिर समस्या को दूर करने के लिए अपने web.config फ़ाइल में सत्यापन सेटिंग्स जोड़ें। मैंने भी उसी समस्या का सामना किया और नीचे ने मेरी समस्या का समाधान दिया।

चरण 1:

वेब पेज में जोड़ा जाने वाला कोड

चरण 2 :

Web.config फ़ाइल में जोड़ा जाने वाला कोड

यह आपकी समस्या का समाधान करेगा।


आपको विनीत विचलन के बाद Jquery को क्यों जोड़ना चाहिए?
अशिन

0

इसके 3 समाधान हैं जिन्हें अन्य लोगों ने ऊपरी तौर पर बताया ... लेकिन जब Application_Start समाधान का प्रयास करें, तो मेरा अन्य jQuery लाइब्रेरी जैसे पिकअप_डेट_एंड_टाइम काम नहीं करता ... इसलिए मैं दूसरे तरीके का परीक्षण करता हूं और इसका उत्तर दिया जाता है: 1- लक्ष्य फ्रेमवर्क को पूर्व 4.5 2 पर सेट करें। - अपने पेज हेडर => में "विनीतवतीकरणमोडे =" कोई नहीं "" का प्रयोग करें

<%@ Page Title="" Language="C#" 
    MasterPageFile="~/Master/MasteOfHotel.Master" 
    UnobtrusiveValidationMode="None" %>

यह मेरे लिए काम करता है और मेरे अन्य jQuery फ़ंक्शन को बाधित नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.