318

Visual Studio 2012 を使用して Web アプリケーションを構築しています。テキスト ボックスに単語数を追加しようとしています。ただし、javascript コードと html コードを追加した後。上記のエラーが表示されます。

ここに私のJavaScriptコードがあります

コード :

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>
4

8 に答える 8

608

4.5 より前の検証モードを有効にするには、web.config キーが必要です。

ValidationSettings:UnobtrusiveValidationModeの詳細:

ASP.NET がビルトイン バリデーター コントロールをグローバルに有効にして、控えめな JavaScript をクライアント側の検証ロジックに使用する方法を指定します。

タイプ: UnobtrusiveValidationMode

デフォルト値: なし

備考: このキー値が"None" [デフォルト] に設定されている場合、ASP.NET アプリケーションは、クライアント側の検証ロジックに 4.5 より前の動作(ページ内の JavaScript インライン) を使用します。このキー値が"WebForms"に設定されている場合、ASP.NET はHTML5 データ属性と、クライアント側の検証ロジック用に追加されたスクリプト参照から遅延バインドされた JavaScript を使用します。

例:

    <appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    </appSettings>
于 2013-05-23T03:24:09.013 に答える
178

新しい機能を無効にするのではなく、エラーの指示に従うことにしました。私の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 ブログ投稿からのものです。私が特に興味を持ったのは、「debug=true」、EnableCDN などに基づいてスクリプト ファイルの配信を集中管理することでした。

于 2014-03-22T03:02:51.477 に答える
96

クライアント側の検証で目立たない JavaScript の使用を無効にするには、少なくとも 3 つの方法があります。

  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 ディレクティブを使用してプロパティを設定することをお勧めします。

<%@ Page Language="C#" UnobtrusiveValidationMode="None" %>
于 2014-08-27T22:04:32.137 に答える
13

global.asax の b_levitt... からの回答にもう少し追加するには:

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>
于 2015-06-04T20:42:09.397 に答える
12

私は同じ難問に遭遇したと信じています。次のように変更したときに問題が発生し始めました。

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

上記のエラーメッセージが表示されます。

追加:

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

問題は解決しますが、検証コントロール/スクリプトが Javascript ランタイム エラーをスローします。 次のように変更した場合:

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

問題ないはずですが、コードの残りの部分が意図したとおりに動作することを確認する必要があります。また、4.5 以降でのみ利用可能ないくつかの新機能を放棄する必要がある場合もあります。

PS このソリューションを実装する前に、以下を読むことを強くお勧めします。特に、非同期機能を使用する場合:

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

2017 年 4 月の更新: いくつかの実験とテストの後、機能する組み合わせを思いつきました。

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

と:

jQuery バージョン 1.11.3

于 2015-12-03T23:47:44.880 に答える
6

この問題は、コントロール バリデータが原因で発生しました。次のように J Query 参照を Web ページに追加し、web.config ファイルに検証設定を追加して、問題を解決します。私も同じ問題に直面し、以下は私の問題の解決策を提供しました。

ステップ1:

ウェブページに追加するコード

ステップ2 :

Web.config ファイルに追加するコード

それはあなたの問題を解決します。

于 2015-09-16T13:04:17.663 に答える