PDA

View Full Version : ارسال اطلاعات به کلاس تعریف شده



mjt10063
دوشنبه 16 اردیبهشت 1392, 19:41 عصر
با سلام دوستان
من یه کلاس تعریف کردم

public class Class_hoviyat
{
public Class_hoviyat()
{
//
// TODO: Add constructor logic here
//
}
public static string classhoviyat
{

}
}


و وقتی می خوام داخل این متغیری که تعریف کردم اطلاعاتی وارد کنم
نمیشه و توی اروری که میده نوشته این فقط خواندنی

من باید موقع ارسال اطلاعات چه کدی بنویسم
با تشکر

ahmad156
دوشنبه 16 اردیبهشت 1392, 19:59 عصر
دوست عزیز من متغیری نمیبینم توی کلاستون!!!

mjt10063
دوشنبه 16 اردیبهشت 1392, 20:20 عصر
وقتی کلاس رو تعریف کردم
این ارور داده میشه


'Class_hoviyat.classhoviyat': property or indexer must have at least one accessor



مگه متغیر classhoviyat این نمیشه که به صورت عمومی تعریف شده


میخوام داخلش یه اطلاعتی بریزم و توی یه صفحه دیگه ازش استفاده کنم

ولی وقتی توی صفحه این کد


Class_hoviyat.classhoviyat = selhoviyat;

رو وارد می کنم این ارور رو میده



Property or indexer 'Class_hoviyat.classhoviyat' cannot be assigned to -- it is read only

ahmad156
دوشنبه 16 اردیبهشت 1392, 20:24 عصر
دوست عزیز 2 تا نکته

1-شما یادتون رفته get و set را براش بنویسین

public static string classhoviyat {
get;set;

}


2-شما به متغیر های static فقط درون method های static دسترسی دارین

mjt10063
دوشنبه 16 اردیبهشت 1392, 20:45 عصر
ممنون دوست عزیز
اگر زحمتی برای شما نداره

بهمون بگید چطوری میشه یه کلاس تعریف کرد
که یه اطلاعاتی رو از یه صفحه بگیره
و بعد توی صفحات دیگر ازش استفاده کرد

من توی سی شارپ تحت ویندوز بدون get, set نجام میدادم و هیچ مشکلی نداشت
ولی توی asp زیاد وارد نیستم

ممنون

ahmad156
سه شنبه 17 اردیبهشت 1392, 08:15 صبح
دوست عزیز بهترین راه حل برای استفاده از اطلاعاتی که در یک صفحه مقداردهی میشن و در صفحه دیگر قرار اون اطلاعات رو بخونن Session هست.
شما کلاستون رو درون یه Session قرار بدین و به راحتی در یه صفحه دیگه اون رو بخونین

mohammad kafiyan
سه شنبه 17 اردیبهشت 1392, 08:26 صبح
هترین راه حل برای استفاده از اطلاعاتی که در یک صفحه مقداردهی میشن و در صفحه دیگر قرار اون اطلاعات رو بخونن Session هست.

البته این در صورتی است که امنیت اطلاعات برای ما مهم باشه و دیگر اینکه با ترافیکی اون سایت نسبتا پایین باشه چون session بار زیادی برای server متحمل می شه
به نظر من از query string استفاده کن اگر امنیت اطلاعات چندان مهم نیست که البته اون راه حل داره که می تونی encode,decodeکنی

mjt10063
سه شنبه 17 اردیبهشت 1392, 12:25 عصر
دوستان میشه بگید من باید چه عبارتی رو جستجو کنم
تا بتونم به راه کاری برسم که بشه باهاش
اطلاعاتی رو از یه صفحه گرفت و تو صفحات دیگر فراخوانی کرد
خیلی ممنون

ahmad156
سه شنبه 17 اردیبهشت 1392, 12:38 عصر
transfer data between pages in asp.net

hesamsalehnamadi
سه شنبه 17 اردیبهشت 1392, 12:45 عصر
خوب دوست عزیز یه پراپرتی تعریف کن از نوع استاتیک ... به راحتی بفرس بگیر
در ضمن اینم بگم... بهترین راه کوئری استرینگ هست با این شرط که اینکریپشن انجام بدی ... اگه بخوای کلاسشو برات بزارم ببین..

hesamsalehnamadi
سه شنبه 17 اردیبهشت 1392, 12:49 عصر
یه کلاس بساز و اینارو بریز توش



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Configuration;

namespace Sn.Common.VO
{
public class CryptorEngine
{
/// <summary>
/// Encrypt a string using dual encryption method. Return a encrypted cipher Text
/// </summary>
/// <param name="toEncrypt">string to be encrypted</param>
/// <param name="useHashing">use hashing? send to for extra secirity</param>
/// <returns></returns>
public static string Encrypt(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
// Get the key from config file
string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));
//System.Windows.Forms.MessageBox.Show(key);
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key ));
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tdes.Clear();
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
/// <summary>
/// DeCrypt a string using dual encryption method. Return a DeCrypted clear string
/// </summary>
/// <param name="cipherString">encrypted string</param>
/// <param name="useHashing">Did you use hashing to encrypt this data? pass true is yes</param>
/// <returns></returns>
public static string Decrypt(string cipherString, bool useHashing)
{
cipherString = cipherString.Replace(" ", "+");
int mod4 = cipherString.Length % 4;
if (mod4 > 0)
{
cipherString += new string('=', 4 - mod4);
}

byte[] keyArray;
byte[] toEncryptArray = Convert.FromBase64String(cipherString);

System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
//Get your key from config file to open the lock!
string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));

if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key ));
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

tdes.Clear();
return UTF8Encoding.UTF8.GetString(resultArray);
}
}
}



و برای ارسال و دریافت از کدهای زیر استفاده کن ..

ارسال :



string sCryptId = CryptorEngine.Encrypt("megdare ersali", true);
Response.Redirect("AbonelikBilgileri.aspx?Id=" + sCryptId);


و برای دریافت



string sQueryStringId = CryptorEngine.Decrypt(Request.QueryString.Get("Id").ToString(), true);

mjt10063
سه شنبه 17 اردیبهشت 1392, 13:19 عصر
خیلی ممنون دوست عزیز از جوابی که دادی
ولی من زیاد وارد نیستم
با این حال یه چیزایی متوجه شدم که شما اطلاعاتی که وادرش میشه رو کد میکنید

بازم شرمنده
کد ساده تر ندارید
حالا ما تا بخوایم به این سطح برسیم با کد ساده تر شروع کنیم بهتره