نحوه ی اجرای کدهای جاوا اسکریپت در Page Load
هنگامی که از آپدیت پنل Update Panel استفاده میکنیم کدهای جاوا اسکریپت به درستی اجرا نمی شوند برای اجرا شدن کدها کافی است که از کدهای زیر استفاده کنید
برای این کار کافی است که کد های خود را درون page Load قرار میدهیم
<script type="text/javascript">
function pageLoad(sender, args) {
//code Hire
}
</script>
رفتن به صفحه ی ورود به برنامه در زمان پایان Session
هنگامی که در یک صفحه ی وب فرم Session برنامه Time Out می شود لازم است که بصورت اتوماتیک به صفحه ی ورود به برنامه برود تا کاربران سیستم دوباره وارد سیستم شوند .
برای اینکار کافی است که کد زیر را در صفحه ی Master Page برنامه ی وب قرار دهیم. تا به طور اتوماتیک هنگام Session Time out به صفحه ی ورود به برنامه برود.
Response.AppendHeader("Refresh", Convert.ToString(Session.Timeout * 60+5) + "; URL=Login.aspx");
نحوه ساخت Captcha برای سایت
وقتی که سایتی بر روی اینترنت بارگذاری می شود و دارای صفحه ی ورود کاربران به سامانه می باشد باید هنگام ورود به سامانه از Captcha استفاده شود تا از هک کردن سایت توسط روبات ها جلوگیری شود.
ساخت کپچا خیلی ساده است فقط کافی است طبق روش زیر عمل شود.
ابتدا در صفحه ی html کدهای زیر را قرار می دهیم.
تسکت باکسی که می خواهیم کد های آن بررسی شود
<asp:TextBox ID="txtCaptcha" runat="server" Width="200px"></asp:TextBox>
بعد تصویر نمایش کپچا را در زیر قرار می دهیم.
<table>
<tr>
<td style="height: 50px; width:100px;">
<asp:Image ID="imgCaptcha" runat="server" />
</td>
<td valign="middle">
<asp:Button ID="btnRefresh" runat="server" Text="Refresh" OnClick="btnRefresh_Click" />
</td>
</tr>
</table>
حال یک صفحه ی نمایش عکس بصورت زیر اضافه می کنیم. و در بخش کدهای سمت سی شارپ کدهای زیر را قرار می دهیم.
public partial class GenerateCaptcha : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
int height = 40;
int width = 130;
Bitmap bmp = new Bitmap(width, height);
RectangleF rectf = new RectangleF(10, 5, 0, 0);
Graphics objGraphics = Graphics.FromImage(bmp);
Color objcolor = Color.FromArgb(250,182,239, 147);
objcolor.GetHue();
objGraphics.Clear(objcolor);
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
objGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
objGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
string objtext = Session["captcha"].ToString();
string objnewText = "";
for (int i = 0; i < objtext.Length; i++)
{
objnewText += objtext.Substring(i,1);
objnewText += " ";
}
objGraphics.DrawString(objnewText, new Font("Thaoma", 16, FontStyle.Strikeout), Brushes.Gray, rectf);
objGraphics.DrawRectangle(new Pen(Color.Gold), 1, 1, width - 2, height - 2);
objGraphics.Flush();
Response.ContentType = "image/jpeg";
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
objGraphics.Dispose();
bmp.Dispose();
}
}
حال در صفحه ای که می خواهیم کپچا ها را بررسی کنیم بصورت زیر عمل می کنیم.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillCapctha();
}
}
void FillCapctha()
{
try
{
Random random = new Random();
string combination = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++)
captcha.Append(combination[random.Next(combination.Length)]);
Session["captcha"] = captcha.ToString();
imgCaptcha.ImageUrl = "GenerateCaptcha.aspx?" + DateTime.Now.Ticks.ToString();
//HandlerTest.ashx
//imgCaptcha.ImageUrl = "HandlerTest.ashx?" + DateTime.Now.Ticks.ToString();
}
catch
{
throw;
}
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
FillCapctha();
}
protected void btnRegister_Click(object sender, EventArgs e)
{
if (Session["captcha"].ToString().ToLower() != txtCaptcha.Text.Trim().ToLower())
Response.Write("Invalid Captcha Code");
else
Response.Write("Valid Captcha Code");
FillCapctha();
}
}
کلیک برو روی بخشی از نقشه و ارسال اطلاعات با جی کویری
ما در این کار یک نقشه از قبل طراحی کرده بودیم و برای ارسال آیدی های آن به صفحه ی دیگر این کار را با استفاده از جی کویری انجام دادیم که کد آن را در زیر برای شما قرار داده ام
<%-- <script src="Scripts/jquery-1.7.2.min.js"></script>--%>
<%-- <script>
$(document).ready(function () {
$("map area").on('click', function () {
var $this = $(this);
var $href = $this.attr('href');
$this.attr('href', 'RequestEntry.aspx?DistrictId=' + $href);
});
});
</script>--%>
محدود کردن TextBox در Asp.net به گرفتن عدد
ما در این مثال قصد داریم که یک تکست باکس را در Asp.net به فقط گرفتن عدد از کاربر محدود نماییم و ما هم این کار را با استفاده از جاوا اسکریپت انجام می دهیم.
برای این کار ابتدا باید تگ Html فرم را به روش زیر طراحی نماییم.
<input type="text" id="txtDigit" onkeypress="return isNumber(event)" />
حال تابع جاوا اسکریپت را به روش زیر می نویسیم تا قادر باشد این تابع
با همه ی مرور گر ها سازگار باشد.
function isNumber(evt) { evt = (evt) ? evt : window.event; var charCode = (evt.which) ? evt.which : evt.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; }
نحوه بدست آوردن آی پی فرد استفاده کننده از سایت
برای بدست آوردن آی پی و مرورگر و خیلی اطلاعات دیگری که کاربر از سایت شما استفاده می کند میتوانیم با استفاده از یک دستور همه ی این موارد و موارد دیگر را بدست بیاوریم
برای گرفتن ای پی کاربر از دستور زیر استفاده میکنیم
Request.ServerVariables["REMOTE_ADDR"]
بطور مثال اگه بر روی صفحه چاپ کند از دستور زیر استفاده میکنیم
Response.Write(Request.ServerVariables["REMOTE_ADDR"])
برای اطلاعات تکمیلی تر و سایر متغییر ها می توانید به آدرس مرجع سایت مراجعه کنید
http://www.w3schools.com/asp/coll_servervariables.asp
ارسال ایمیل با استفاده از جیمیل Gmail و ایمیل گوگل
ابتدا باید وارد ایمیل خود شوید
سپس به آدرس زیر بروید
https://www.google.com/settings/security/lesssecureapps
و بعد از وارد شدن به این صفحه
بر روی Enable Less Secure Apps کلیک کنید تا بتوان از کدهای زیر استفاده کرد و در جریان ارسال ایمیل با مشکلی مواجه نشوید.
این کار را ما با استفاده از یک کلاس انجام می دهیم
public class MailSender
{
public static bool SendEmail(
string pGmailEmail,
string pGmailPassword,
string pTo,
string pSubject,
string pBody,
System.Web.Mail.MailFormat pFormat,
string pAttachmentPath)
{
try
{
System.Web.Mail.MailMessage myMail = new System.Web.Mail.MailMessage();
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/smtpserver",
"smtp.gmail.com");
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/smtpserverport",
"465");
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/sendusing",
"2");
//sendusing: cdoSendUsingPort, value 2, for sending the message using
//the network.
//smtpauthenticate: Specifies the mechanism used when authenticating
//to an SMTP
//service over the network. Possible values are:
//- cdoAnonymous, value 0. Do not authenticate.
//- cdoBasic, value 1. Use basic clear-text authentication.
//When using this option you have to provide the user name and password
//through the sendusername and sendpassword fields.
//- cdoNTLM, value 2. The current process security context is used to
// authenticate with the service.
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//Use 0 for anonymous
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/sendusername",
pGmailEmail);
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/sendpassword",
pGmailPassword);
myMail.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/smtpusessl",
"true");
myMail.From = pGmailEmail;
myMail.To = pTo;
myMail.Subject = pSubject;
myMail.BodyFormat = pFormat;
myMail.Body = pBody;
myMail.BodyEncoding = System.Text.Encoding.UTF8;
if (pAttachmentPath.Trim() != "")
{
MailAttachment MyAttachment =
new MailAttachment(pAttachmentPath);
myMail.Attachments.Add(MyAttachment);
myMail.Priority = System.Web.Mail.MailPriority.High;
}
System.Web.Mail.SmtpMail.SmtpServer = "smtp.gmail.com:465";
System.Web.Mail.SmtpMail.Send(myMail);
return true;
}
catch (Exception ex)
{
throw;
}
}
}
حالا با استفاده از تابع زیر آن کلاس را فراخوانی می کنیم و از آن استفاده می کنیم.
MailSender.SendEmail("siros1368@gmail.com", "paswordEmail", "email to (maghsad)", "این موضوع ایمیل است", "در اینجا هم متن ایمیل را قرار میدهیم", System.Web.Mail.MailFormat.Text, Server.MapPath(@"/PicWeblog/footer.rar"));
اگر شما فایلی را برای پیوست کردن ایمیل نداشته باشید بخش آخر را "" بصورت رشته خالی قرار دهید
نحوه دانلود یک متن با استفاده از Asp.net
البته اولش باید از این یوزینگ استفاده کنیم
using System.Text;
StringBuilder sb = new StringBuilder();
string output = "siroos, si, babakhani,ba";
sb.Append(output);
sb.Append("\r\n");
string text = sb.ToString();
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Length", text.Length.ToString());
Response.ContentType = "text/plain";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("content-disposition", "attachment;filename=\"output.txt\"");
Response.Write(text);
Response.End();
که با استفاده از دستورات و قطعه کد های بالا امکان دانلود یک متن را در زبان برنامه نویسی Asp.net برای شما فراهم میکند و شما می توانید آن را بصورت یک فایل متنی Txt در کامپیوتر خود ذخیره نمایید.
نکته : تکه کد بالا فقط توانایی دانلود و ذخیره متن انگلیسی را دارد با استفاده از کد زیر شما میتوانید متن ها فارسی را هم در فایل متنی خود قرار دهید و آن را قابل دانلود برای کارهای خاصی نمایید.
دانلود یک فایل متنی فارسی با استفاده از Asp.net با زبان برنامه نویسی #C
ابتدا یوزینگ زیر را اضافه میکنیم.
using System.IO;
بعد تیکه کد زیر را به برنامه اضافه مکنیم تا امکان دانلود فراهم شود.
StringWriter oStringWriter = new StringWriter();
oStringWriter.WriteLine("siroos babakhani in tamrin/nخیلی ممنونم از اینکه این فایل را برای دانلود انتخاب کردید /n in tamrni anajm shod");
Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", "attachment;filename=" + string.Format("txtfiles.txt"));
Response.Clear();
using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
writer.Write(oStringWriter.ToString());
}
Response.End();
با استفاده از تکه کد بالا امکان دانلود متن فارسی را در برنامه می توانید اضافه کنید.
نحوه کار با jSon
ذخیره یک فایل متنی در Json
برای کار با فایل json ابتدا آن فرمت و متن مورد نظر را با استفاده از تابع زیر تبدیل میکنیم
public static string ToJSON(this object obj)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
return Serializer.Serialize(obj);
}
public static string ToJSON(this object obj, int recursionDepth)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RecursionLimit = recursionDepth;
return serializer.Serialize(obj);
}
از دو تابع بالا برای تبدیل دیتا ها به فایل جی سان استفاده میکنیم
و نهایتا با استفاده از کدهای زیر آن را در مسیر مشخصی ذخیره میکنیم
var json=Context.District_FCH(null, null, Convert.ToInt32(drpRegionId.SelectedValue));
string jjs = ToJSON(json);
System.IO.File.WriteAllText(@"c:\path.txt", jjs);
که خط اولی دیتاهای موجود را با استفاده از استورپروسیژر از دیتابیس میخونه
و در خط دومی آن را به نوع جی سان و استرینگ تبدیل میکنه
و در خط سوم آن را به عنوان یک فایل در حافظه ذخیره میکند.