Asp.NET Soru..
-
Request.QueryString["ID"] yi kontrol ettiriyorum, fakat bu sadece numerik yani rakamlar olacak adam gelip ....aspx?ID=1234kd2 yazınca hata mesajı verdirtecem, bunu nasıl kontrol ederim, sayı mı harf mi girildiğini ?
-
asp.net te hiç yapmadım ama aynı fonksiyon vardır muhtemelen.
asp de IsNumeric() fonksiyonuyla kontrol ediyosun
If IsNumeric(Veri) = True Then 'eğer veri rakamsal ise
gibi.
-
sağ ol kardeş ama yok öyle bir şey :S
-
umarım kodlar düzgün görünür (: bu fonksiyonla kontrol edebilirsin. bildiğim kadarıyla asp deki gibi sadece isnumeric(string) olayı yok .net de
public bool IsNumeric(string s)
{
char nns = System.Globalization.CultureInfo
.CurrentCulture.NumberFormat.NegativeSign[0];
char dcs = System.Globalization.CultureInfo
.CurrentCulture.NumberFormat.NumberDecimalSeparator[0];
int nnsi = s.IndexOf(nns);
if (nnsi > 0)
return false;
if (nnsi == 0)
s = s.Remove(nnsi, 1);
char[] c = s.ToCharArray();
if (c[0] == dcs || c[c.Length - 1] == dcs)
return false;int dcsc = 0;
for (int i = 0; i < c.Length; i++)
{
if (c[i] > 57 || c[i] < 48)
{
if (c[i] != dcs)
return false;
else
dcsc++;
}
if (dcsc > 1)
return false;
}
return true;
} -
Teşekkürler fakat çok uzun ve gereksiz. Şöyle bir yöntem kullandım. Ben ID tutuyorum ve bu ID numerik olduğu için,
try
{
Response.Write(Convert.ToInt16(Request.QueryString["ID"]) *2);
}catch
{
Response.Redirect("Default.aspx");
}
string bir şey gelirse string * int diye bir şey olamayacağı için hataya düşecektir.
-
psycho nun fonksiyon gereksiz değil aslında..
böyle kullanırsan, senin yöntemde hata vermiş olcak :)
try
{
Console.WriteLine(Convert.ToInt16("123456") * 2);
}
catch
{
Console.WriteLine("Default.aspx");
}
girilen verinin uzunluğuna göre değişir,
5 basamagı geçmicek bi id cekmede kullanıcaksan, senin yöntem idare ederde,
formdan bi veri cekipde numeric mi die kontrol ettiriceksen tırtlar.. :) -
yok sadece PM yollarken ID var, birisi ID=12kdl diye bir şey yazarsa kontrol ettiriyorum..
try
{
Response.Write((Convert.ToInt16(Request.QueryString["ID"]) * 2));
}
catch
{
Response.Redirect("Default.aspx");
}
bu çalışıyor...
-
Yazdığın try-catch li yöntem çalışır ama yaptığı iş salaş programcılığa örnektir. Mümkün olduğunca işlerini try-catch arasında kontrol ettirmeden yapmaya bak.
-
voltigore bunu yazdı:
-----------------------------
Yazdığın try-catch li yöntem çalışır ama yaptığı iş salaş programcılığa örnektir. Mümkün olduğunca işlerini try-catch arasında kontrol ettirmeden yapmaya bak.
-----------------------------koyu olan cümleyi bir yazılımcı yazmış olamaz :/
-
SharpShooter,
Adam gayet doğru söylüyor.
Ayrıca, Mamii, bana sorarsan olayı ufak bir method kullan bu metodda,
TypeCasting ile rakam olmayan değelerlere bak.
(www.asciitable.com)
Ya da bu da olmaz dersen, textBox'unun keyPress event'ine bak.
Ordan yap.
Ben daha önce yapmıştım böyle bir fonksiyon.
private void AdetinIntOldugunuKontrolEt(object sender, KeyPressEventArgs e)
{
if ((Char.IsDigit(e.KeyChar) == false) && (!e.KeyChar.Equals('\b')))
e.Handled = true;
}
Böylece basılan 'karakter'leri yok etmiş oluyorsun.
