Visual Studio 2012 kullanarak bir web uygulaması oluşturuyorum. Metin kutuma kelime sayısı eklemeye çalışıyorum. Ancak javascript kodlarını ve html kodlarını ekledikten sonra. Yukarıda belirtildiği gibi hata alıyorum.
İşte benim javascript kodlarım
Kod:
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, "");
}
Ana sayfadaki sunucu kodları
<script type="text/javascript" src="js/JScript.js" ></script>
ASPX kodları, (Html kodları)
<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>
Ön 4.5 doğrulama modunu etkinleştirmek için bir web.config anahtarına ihtiyacınız vardır.
Daha Fazla Bilgi ValidationSettings:UnobtrusiveValidationMode:
ASP.NET'in yerleşik doğrulayıcı denetimlerini küresel olarak nasıl etkinleştireceğini belirtir istemci tarafı doğrulama mantığı için göze batmayan JavaScript kullanmak için.
Tür: UnobtrusiveValidationMode
Varsayılan değer: Hiçbiri
Açıklamalar: Bu anahtar değer "Yok" [varsayılan] olarak ayarlanırsa, ASP.NET uygulama 4.5 öncesi davranışı kullanacaktır (JavaScript satır içi sayfalar) istemci tarafı doğrulama mantığı için. Bu anahtar değer ayarlanırsa "WebForms" için ASP.NET, HTML5 veri-özelliklerini ve geç bağlı İstemci tarafı doğrulama için eklenen bir komut dosyası referansından JavaScript mantık.
Örnek:
Yeni bir özelliği devre dışı bırakmak yerine, hatanın talimatlarını izlemeyi tercih ettim. global.asax.cs dosyama şunu ekledim:
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"
});
}
Bu, komut dosyası kaynak eşlemelerinin bazı avantajlarını vurgulayan bir msdn blog gönderisinden alınmıştır. Benim özellikle ilgimi çeken "debug=true", EnableCDN, vb. temelinde script dosyalarının teslimi üzerinde merkezi kontroldü.
ASP.NET'in yeni sürümünde göze batmayan doğrulama varsayılan olarak etkinleştirilmiştir. Göze batmayan doğrulama, doğrulamayı gerçekleştirmek için satır içi JavaScript'i jQuery kullanan küçük bir JavaScript kütüphanesi ile değiştirerek sayfa boyutunu azaltmayı amaçlamaktadır.
Aşağıdakileri içerecek şekilde web.config dosyasını düzenleyerek devre dışı bırakabilirsiniz:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
Ya da daha iyisi global.asax içindeki Application_Start yöntemini değiştirerek düzgün bir şekilde yapılandırın:
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"
}
);
}
Beginning ASP.NET 4.5.1 in C# and VB kitabının 399. sayfasında, göze batmayan doğrulamanın yararları ve yapılandırılmasına ilişkin bir kılavuz yer almaktadır.
RouteConfig'i arayanlar için. Visual Studio'da yeni bir proje yaptığınızda App_Code klasörüne otomatik olarak eklenir. İçeriği şuna benzer:
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);
}
}
}