PDA

View Full Version : سوال: نحوه فراخوانی javascript های موجور در یک صفحه دیگر!



tazarvmmr
پنج شنبه 04 آذر 1389, 13:00 عصر
سلام به همه
من یک page دارم که توش دوتا script نوشتم، وظیفه یکی اینه که آدرس یک فایل text رو میگیره و انو توی یک مثلا textbox نمایش میده و دومیش محتوای textbox رو توی فایل میریزه

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

میخوام بدونم ما در ASP.NET اصلا امکان اینکه javascript رو قبل از فراخونی صفحه انجام بدیم یا تعیین کنیم داریم یا حتما باید از Querystring یا session استفاده کنیم!

من چون از جاوا اسکریپت چیز زیادی نمیدونم اینو پرسیدم. حالا اگر جواب منفی بود میخوام ببینم راهی به نظرتون میرسه که در querystring کاربر نتونه دستی تو آدرس بار تغییر بده!

مثلا اگر من صفحه رو با querystring فراخونی کنم میشه چیزی شبیه به این:



Response.Redirect("~\showfile.aspx?fn=1.txt");

اینجا اگر کاربر بره و به جای 1.txt مثلا بزنه 2.txt ممکنه به هر علتی خطا بوجود بیاد

استفاده از Session هم متاسفانه به خاطر اینکه تعداد کاربرا زیاده فکر میکنم بار سرور رو خیلی زیاد میکنه و در ضمن این همه ماجرا نیست و اگر بخوام از session استفاده کنم حافظه زیادی میگیره

امیدوارم منظورمو رسونده باشم :)

majnun
پنج شنبه 04 آذر 1389, 13:11 عصر
میتونید متنی که میخواهید بگیرید را درون یک هیدن فیلد بریزید و بعد در pageload صفحه (سمت جاوااسکریپت) این مقدار هیدن فیلد را بگیرین و ازش استفاده کنید

اول pageload سمت سرور اجرا میشه و بعد از اون سمت کلاینت

میتونید کوئری استرینگ را رمز نویسی کنید یا یک الگوریتم خیلی خیلی ساده که فقط کاربر ندونه چیه

tazarvmmr
پنج شنبه 04 آذر 1389, 14:21 عصر
مرسی از توجه
در مورد hidden field میشه توضیح بدین، چطوری میتونم از مثلا صفحه selectfile.aspx توی هیدن فیلد صفحه showfile.aspx مقدار بزارم؟ این دقیقا اون چیزیه که من نمیدونم و مشکل منو حل میکنه

در مرود querystring هم نمیدونم چرا یه حسی به من میگه خیلی جالب نیست که ازش استفاده کنیم! مخصوصا برای کاربرانی که اهل شیطونی و کنکاش هستن! اگر رمز گذاری کنیم هم باز چون میشه تغییرشون داد جالب نیست، مگر اینکه مثلا بشه آدرس بار رو کلا از دسترس خارج کرد

majnun
پنج شنبه 04 آذر 1389, 15:05 عصر
برای اینکه از کوئری استرینگ استفاده نکنید ، باید از سشن استفاده کنید ، البته راه های دیگه ای هم هست که اینجا بجث شده :

http://barnamenevis.org/forum/showthread.php?t=165065

در مورد هیدن فیلد هم ربطی بر ارسال پارامتر به صفحه دیگه نداره ، هیدن فیلد مقدار را براتون نگه میداره در خود صفحه و میتونید با جاوااسکریپت هم بهش دسترسی داشته باشین

tazarvmmr
پنج شنبه 04 آذر 1389, 18:41 عصر
پس یعنی راهی نیست که addressbar غیر فعال بشه؟ استفاده از session میترسم حافظه سرور رو درگیر کنه
این یک برنامه هستش که رو اینترانت قرار میگیره و شاید 200 نفری کاربر داشته باشه و من تا الان یک session دارم که اینجا تعریفشو مینوسیم

شما که تجربه داری لطفا بگو که این session بزرگه خیلی یا نه



public class MyUser
{
private string userName;
private int userCode;
private int groupCode;
private int disCount;
private bool admin;
private bool groupAdmin;
private string rights;
private string usergroupname;
private int usersexid;
private int userletterslevel;
private int userparaflevel;
private string usersqlscript;
private string usercurrentposition;
private int currentprojectid;
private int currentcustomerid;
private int currentpersonid;
private int currentofficeid;
private bool changed;
private int selectedyear;
private int currentyear;
private string myselectedyear;
private int var1;
private int var2;
private int var3;
private int var4;

publicint Var1
{
get { return var1; }
set { var1 = value; }
}
public int Var2
{
get { return var2; }
set { var2 = value; }
}
public int Var3
{
get { return var3; }
set { var3 = value; }
}
public int Var4
{
get { return var4; }
set { var4 = value; }
}

publicstr ing MySelectedYear
{
get { return myselectedyear; }
set { myselectedyear = GetSelectedYear(value); }
}
public static string GetSelectedYear (string s)
{
string Result;
if (s=="")
{
Result = "All";
}
else
{
Result = s;
}
return Result;
}
public bool Changed
{
get { return changed; }
set { changed = value; }
}
public int SelectedYear
{
get { return selectedyear; }
set { selectedyear = value; }
}
public string GetDayName(int DayNumber)
{
string[] DayName = newstring[7] { "", "", " ", "", " ", "", "" };
return DayName[DayNumber];
}

public int GetCurrentYear (DateTime todaydate)
{
int fyear;
System.Globalization.PersianCalendar pcal = new System.Globalization.PersianCalendar();
fyear = pcal.GetYear(todaydate);
return fyear;
}
public int CurrentYear
{
get { return GetCurrentYear(DateTime.Now); }
}

public string GetTodayDate(DateTime todaydatetime)
{
int fyear, fmonth, fday;
System.Globalization.PersianCalendar pcal = new System.Globalization.PersianCalendar();
fyear = pcal.GetYear(todaydatetime);
fmonth = pcal.GetMonth(todaydatetime);
fday = pcal.GetDayOfMonth(todaydatetime);
string sfyear = fyear.ToString();
string sfmonth = fmonth.ToString();
string sfday = fday.ToString();
if (fday <10)
{
sfday = "0" + sfday;
}
if (fmonth < 10)
sfmonth = "0" + sfmonth;
string fdatestr = sfyear + "/" + sfmonth + "/" + sfday;
return fdatestr;
}
public string FarsiDate
{
get { return GetTodayDate(DateTime.Now); }
}
public int CurrentProjectyId
{
get { return currentprojectid; }
set { currentprojectid = value; }
}
public int CurrentPersonId
{
get { return currentpersonid; }
set { currentpersonid = value; }
}
public int CurrentOfficeId
{
get { return currentofficeid; }
set { currentofficeid = value; }
}
public int CurrentCustomerId
{
get { return currentcustomerid; }
set { currentcustomerid = value; }
}
public string UserCurrentPosition
{
get { return usercurrentposition; }
set { usercurrentposition = value; }
}
public string UserSqlStcript
{
get { return usersqlscript; }
set { usersqlscript = value; }
}
public int UserParafsLevel
{
get { return userparaflevel; }
set { userparaflevel = value; }
}
public int UserLetterLevel
{
get { return userletterslevel; }
set { userletterslevel = value; }
}
public int UserSexId
{
set { usersexid = value; }
}
public string UserSex
{
get
{
string result = " ";
if (usersexid == 1)
{
result = " ";
}

else
{
result = " ";
}
return result;
}
}
public string UserGroupName
{
get { return usergroupname; }
set { usergroupname = value; }
}

public string UserName
{
get { return userName; }
set { userName = value; }
}
public int UserCode
{
get { return userCode; }
set { userCode = value; }
}
public int GroupCode
{
get { return groupCode; }
set { groupCode = value; }
}
public int Discount
{
get { return disCount; }
set { disCount = value; }
}
public bool IsAdmin
{
get { return admin; }
set { admin = value; }
}
public bool IsGroupAdmin
{
get { return groupAdmin; }
set { groupAdmin = value; }
}
public string UserRights
{
get { return rights; }
set { rights = value; }
}
public bool HaveThisRight(int RightPos)
{
char ch = rights[RightPos];
bool bl = ( ch == '1' );
return bl;
}


}

tazarvmmr
پنج شنبه 04 آذر 1389, 18:42 عصر
یعنی این یه کلاسه که من به اطلاعاتش نیاز داشتم و اجبارا session رو از این جنس تعریف کردم