محمد
تماس با من
پروفایل من
آرشیو وبلاگ
      Mohammad (وب لاگ شخصی محمد دیان، مهندس و برنامه نویس نرم افزار)
چگونگی دسترسی به Session یا Request در توابع static نظیر WebMethod ها نویسنده: محمد - چهارشنبه ۱٦ فروردین ۱۳٩۱

اگر تا حالا با JQuery و Ajax تو ASP.Net کار کرده باشید  ، حتما متوجه این موضوع شدید که ما نمی تونیم به Session یا Request در توابع static دسترسی داشته باشیم. 

خوب برای اینکه بتونیم به این متغیرها در توابع استاتیک دسترسی پیدا کنیم چه باید کرد ؟

سادس ، میشه از روش جایگزین زیر استفاده کنیم :

System.Web.HttpContext.Current.Request
System.Web.HttpContext.Current.Session

حالا اگر دقت کرده باشید به همین روش و به کمک Request می تونیم به QueryString هم دسترسی پیدا کنیم

System.Web.HttpContext.Current.Request.QueryString
  نظرات ()
تکس باکس عددی Numeric TextBox Javascript نویسنده: محمد - یکشنبه ۱۳ آذر ۱۳٩٠

اگر یه تکس باکس دارید که می خواهید ، کاربر فقط اجازه داشته باشه که عدد واردش کنه راش اینجاست چشمک

خیلی از جاها میشه نمونه این کار رو با JQuery ببینید اما اینو با جاوا اسکریپت خام میشه درآورد که خیلی کاربردی تر است.

function KeyPress(e)
{
    //Allow `Delete` & `BackSpace`
    if ([e.keyCode||e.which]==8 || [e.keyCode||e.which]==46) 
        return true;
    if ([e.keyCode||e.which] < 48 || [e.keyCode||e.which] > 57)
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    return true;
} 

این هم Textboxی که باید تو صفحه قرار بدید

<input id="numericTextbox" onkeypress="KeyPress(event)" type="text" value="" /> 
Reference
آشنایی بیشتر با کدهای کلیدها
  نظرات ()
بدست آوردن عدد بعدی تولید شده برای ستون ID در SQL نویسنده: محمد - پنجشنبه ٢۱ مهر ۱۳٩٠

با سلام.

گاهی نیاز است که ما بتونیم تا عدد بعدی ستون ID رو که PrimaryKey کردیم و به صورت اتوماتیک زیاد میشه بخونیم.

اگر Table ما خالی نباشه که به راحتی میشه با LINQ این کار رو انجام داد

public int GetLastNewsID()
{
    return TableNames.Select(q => q.id).Max();
}

 

اما اگر Table ما خالی باشه تابع بالا Exception میده و کار خراب میشه. برای اینکه هیچ وقت با Exception مواجه نشیم باید از T-SQL استفاده کنیم. خوب من تابع مورد نیاز برای این کار رو براتون نوشتم که امیدوارم به دردتون بخوره.

Create FUNCTION [dbo].[GetLastNewsID](@TableName NVARCHAR(50))
RETURNS int
AS
BEGIN
    RETURN(SELECT IDENT_CURRENT (@TableNameAS Current_Identity);
END

حالا اگر بخواهیم از خود LINQ استفاده کنیم تابع زیر کار ما رو راه می اندازه:

public int GetLastID(string tableName)
{
    const string command = @"SELECT IDENT_CURRENT ({0}) AS Current_Identity;";
    var id = EntityModel.ExecuteStoreQuery(command, tableName).First();
    return Convert.ToInt32(id);
}


کلمات کلیدی :
next automatically incrementing primary key

منبع StackSverFlow

  نظرات ()
بازگردانی دیتابیس SQL توسط T-SQL نویسنده: محمد - یکشنبه ٩ آبان ۱۳۸٩

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

void Restore(string ConnectionString, string DatabaseFullPath)
{
    using (SqlConnection con = new SqlConnection(ConnectionString))
    {
        con.Open();

        string UseMaster = "USE master";
        SqlCommand UseMasterCommand = new SqlCommand(UseMaster, con);
        UseMasterCommand.ExecuteNonQuery();

        string Alter1 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Single_User WITH Rollback Immediate";
        SqlCommand Alter1Cmd = new SqlCommand(Alter1, con);
        Alter1Cmd.ExecuteNonQuery();

        string Restore = @"RESTORE DATABASE [" + DatabaseFullPath + "] FROM DISK = N'" + backUpPath + @"' WITH  FILE = 1,  NOUNLOAD,  STATS = 10";
        SqlCommand RestoreCmd = new SqlCommand(Restore, con);
        RestoreCmd.ExecuteNonQuery();

        string Alter2 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Multi_User";
        SqlCommand Alter2Cmd = new SqlCommand(Alter2, con);
        Alter2Cmd.ExecuteNonQuery();

        labelReport.Text = "Successful";
    }
} 

کلمات کلیدی : Restore SQL DataBase , Exclusive access could not be obtained because the database is in use , T-SQL , C#

  نظرات ()
خاموش کردن سیستم توسط C# نویسنده: محمد - سه‌شنبه ۱۳ مهر ۱۳۸٩

با کد زیر می تونید سیستم رو خاموش کنید :

void button_Click(object sender, EventArgs e)
{
    try
    {
	ManagementBaseObject mboShutdown = null;
	ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
	mcWin32.Get();
	// You can't shutdown without security privileges
	mcWin32.Scope.Options.EnablePrivileges = true;
	ManagementBaseObject mboShutdownParams = mcWin32.GetMethodParameters("Win32Shutdown");
	// Flag 1 means we want to shut down the system
	"mboShutdownParams[Flags"] = "1";
	"mboShutdownParams[Reserved"] = "0";
	foreach (ManagementObject manObj in mcWin32.GetInstances())
		mboShutdown = manObj.InvokeMethod("Win32Shutdown", mboShutdownParams, null);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
} 
  نظرات ()
Disable کردن Enter در TextBox در ASP.NET نویسنده: محمد - یکشنبه ٢۸ شهریور ۱۳۸٩

اگر با ASP.NET کار کرده باشید ، میدونید که با فشار دادن Enter داخل یه TextBox فرم توسط DefaultButton فرم Submit میشه.

خوب این همیشه چیزه خوبی نیست ، چون با توجه به اینکه ما تنها یه فرم میتونیم تو ASP.NET داشته باشیم ، برای همین نباید فرم همیشه با یه Button خاص Submit شه.

برای حل این مشکل ما می تونیم دکمه Enter رو تو بعضی TextBoxها Disable کنیم تا کاربر مجبور شه روی دکمه Submit مورد نظر ما کلیک کنه.ما این کار رو با استفاده از JavaScript و رویداد OnKeyDown انجام میدیم.

<script language="javascript" type="text/javascript">
function CancelEnter() 
{
    if (window.event.keyCode == 13) 
    {
        event.returnValue = false;
        event.cancel = true;
    }
}
</script>
.
.
.
<asp:TextBox ID="TextBoxSearch" runat="server" OnKeyDown="CancelEnter()"></asp:TextBox> 
  نظرات ()
SHA در C# نویسنده: محمد - چهارشنبه ٢٦ اسفند ۱۳۸۸

همان طور که میدونید مدتی هست که دیگه به برنامه نویسان توصیه میشه برای Hashing از MD5 استفاده نکنند. MD5 یه الگوریتم خوب برای به هم ریختن یه رشته بود که مدت ها بود که استفاده میشد و خوب ، هنوز هم استفاده میشه ، اما دیگه تاریخ مصرفش تموم شده و روش های جدیدی چون SHA جاشو گرفتن.

خوشبختانه ما تو .Net می تونیم از این الگوریتم استفاده کنیم.

using System.Security.Cryptography;
using System.Text;

private static string GetSHA1(string strPlain)
{
    UnicodeEncoding UE = new UnicodeEncoding();
    byte[] HashValue, MessageBytes = UE.GetBytes(strPlain);
    SHA1Managed SHhash = new SHA1Managed();
    string strHex = "";

    HashValue = SHhash.ComputeHash(MessageBytes);
    foreach (byte b in HashValue)
    {
        strHex += String.Format("{0:x2}", b);
    }
    return strHex;
}

private static string GetSHA256(string strPlain)
{
    UnicodeEncoding UE = new UnicodeEncoding();
    byte[] HashValue, MessageBytes = UE.GetBytes(strPlain);
    SHA256Managed SHhash = new SHA256Managed();
    string strHex = "";

    HashValue = SHhash.ComputeHash(MessageBytes);
    foreach (byte b in HashValue)
    {
        strHex += String.Format("{0:x2}", b);
    }
    return strHex;
} 
  نظرات ()
MD5 در C# نویسنده: محمد - چهارشنبه ۱٩ اسفند ۱۳۸۸

اگر قبلا با زبان هایی مثل PHP کار کرده باشید حتما با الگوریتم به هم ریختن MD5 آشنایی دارید.

کد زیر تابعی است که این کار را در C# انجام می دهد.

public string MD5(string password)
{
    byte[] textBytes = System.Text.Encoding.Default.GetBytes(password);
    try
    {
        MD5CryptoServiceProvider cryptHandler;
        cryptHandler = new MD5CryptoServiceProvider();
        byte[] hash = cryptHandler.ComputeHash(textBytes);
        string ret = "";
        foreach (byte a in hash)
        {
            if (a < 16)
                ret += "0" + a.ToString("x");
            else
                ret += a.ToString("x");
        }
        return ret;
    }
    catch { throw; }
} 
  نظرات ()
بدست آوردن آدرس IP از روی DNS HostName در C# نویسنده: محمد - جمعه ۳٠ بهمن ۱۳۸۸
private void Button1_Click(object sender, EventArgs e)
{
    textBoxIP.Text = GetIP(GetHostName("http://mds-soft.persianblog.ir/post/100/"));
}

/// <summary>
/// Returns the Host name from a web address
/// </summary>
private string GetHostName(string WebAddress)
{
    string HostName = "";
    string OriginalUrl = WebAddress.Trim();
    Uri uri;

    if (!Uri.TryCreate(WebAddress, UriKind.Absolute, out uri))
        HostName = new UriBuilder(WebAddress).Host;
    else
        HostName = uri.Host;

    return HostName;
}

/// <summary>
/// Returns the IP of HostName
/// </summary>
private string GetIP(string HostName)
{
    IPAddress[] addresslist = Dns.GetHostAddresses(HostName);
    return addresslist[0].ToString();
} 
  نظرات ()
بدست آوردن نام host از یک آدرس اینترنتی در C# نویسنده: محمد - جمعه ۳٠ بهمن ۱۳۸۸

شاید گاهی پیش بیاد که مایل باشید،آدرس host رو از یک URI یا URL استخراج کنید ، مثلا می خواهید آدرس persianblog.ir رو از آدرس زیر جدا کنید :
http://persianblog.ir/CreatePost.aspx?blogID=5752
برای این کار چند راه هست :

توسط عبارات منظم :

private string GetHostName(string WebAddress)
{
    string Pattern = @"//(\w.*?\w)/";
    Regex re = new Regex(Pattern, RegexOptions.IgnoreCase);
    string HostName = re.Match(WebAddress.Trim()).Groups[1].Value;
    return HostName;
} 

توسط Uri و UriBuilder :

private string GetHostName(string WebAddress)
{
    string HostName = "";
    string OriginalUrl = WebAddress.Trim();
    Uri uri;

    if (!Uri.TryCreate(WebAddress, UriKind.Absolute, out uri))
        HostName = new UriBuilder(WebAddress).Host;
    else
        HostName = uri.Host;

    return HostName;
} 
  نظرات ()
بدست آوردن مسیر فایل exe اصلی برنامه خودمون نویسنده: محمد - یکشنبه ٢٥ بهمن ۱۳۸۸

گاهی نیاز هست تا بدونیم برنامه ما در کدام مسیر از هارد کامپیوتر مقصد در حال اجرا شدن هست. با استفاده از کد زیر ما می تونیم مسیر فایل exe اصلی برنامه رو پیدا کنیم :

WPF :

string FullPathOfExeFile = 
	System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\"; 


Win Form :

string FullPathOfExeFile = 
	Application.StartupPath + "\\" 
  نظرات ()
تولید اعداد تصادفی غیر تکراری نویسنده: محمد - یکشنبه ٢٥ بهمن ۱۳۸۸

Non-repetitive random number C#

مشکل کلاس Random اینه که همیشه اعدادی که تولید می کنه غیر تکراری نیستند و گاهی یک عدد چندین بار پشت سر هم تکرار میشه حتی اگر از تعریف زیر استفاده کنیم:

Random random = new Random((int)DateTime.Now.Ticks); 

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

List<int> UniqueRandom(int minInclusive, int maxInclusive)
{
    List<int> ReturnList = new List<int>();
    List<int> candidates = new List<int>();
    for (int i = minInclusive; i <= maxInclusive; i++)
    {
        candidates.Add(i);
    }
    Random rnd = new Random();
    while (candidates.Count > 0)
    {
        int index = rnd.Next(candidates.Count);
        ReturnList.Add(candidates[index]);
        candidates.RemoveAt(index);
    }
    return ReturnList;
} 



منبع

  نظرات ()
تبدیل اعداد انگلیسی به فارسی نویسنده: محمد - جمعه ٢۳ بهمن ۱۳۸۸

متد زیر به صورت  ExtensionMethod نوشته شده. پس فقط کافی است این کلاس رو به پروژتون اضافه کنید. بعد از اون آخر هر رشته که نقطه بزنید می تونید این متد رو مشاهده کنید.

public static class ExtensionMethods
{
    /// <summary>
    /// متدی برای تبدیل اعداد انگلیسی به فارسی
    /// </summary>
    public static string ToPersianNumber(this string input)
    {
        //۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹
        input = input.Replace("0", "۰");
        input = input.Replace("1", "۱");
        input = input.Replace("2", "۲");
        input = input.Replace("3", "۳");
        input = input.Replace("4", "۴");
        input = input.Replace("5", "۵");
        input = input.Replace("6", "۶");
        input = input.Replace("7", "۷");
        input = input.Replace("8", "۸");
        input = input.Replace("9", "۹");
        return input;
    }
} 
  نظرات ()
بدست آوردن لیست تمامیه Type ها در .Net نویسنده: محمد - پنجشنبه ۱۳ فروردین ۱۳۸۸

با سلام.
چند وقت پیش دنبال یه کدی بودم که بشه لیست تمامیه Type های .NET Framework رو باهاش در آورد.
جایی نتونستم پیدا کنم ، فقط با راهنماییه بچه های CodeProject فهمیدم که باید از Reflection استفاده کنم. چیزس که قبلا کار نکرده بودم .
بعد از یه دو سه روزی کار کردن و آشنا شدن با هاش این کد رو نوشتم که اسم تمامیه Type های .Net رو پیدا می کنه و اونا رو به syntax یه آرایه از string در C# در میاره و تو یه فایل کنار خود پروژه ذخیره می کنه .
حالا برا شما هم این کد رو می زارم

static string fileName = "types.txt";
static void Main(string[] args)
{
    StreamWriter SW;
    SW = File.CreateText(fileName);
    SW.WriteLine("string[] mds = new string[] {");
    SW.Write("\t\t\t\t\t");

    DirectoryInfo directory = new DirectoryInfo(Environment.ExpandEnvironmentVariables("%SystemRoot%") + @"\assembly");

    Assembly assembly;
    Type[] types;

    var DLL_Files = directory.GetFiles("*.dll", SearchOption.AllDirectories);

    short i = 0;
    int assembliesCounter = 0;
    int typeCounter = 0;
    int allAssemblies = DLL_Files.Length;
    int counter = 0;

    foreach (var file in DLL_Files)
    {
        assembliesCounter++;
        try
        {
            assembly = Assembly.LoadFile(file.FullName);
            types = assembly.GetTypes();
            typeCounter = types.Length;
            foreach (var type in types)
            {
                i++;
                typeCounter--;
                if (i > 10)
                {
                    SW.WriteLine("\"" + type.Name.Replace("\\", "") + "\"" + ", ");
                    SW.Write("\t\t\t\t\t");
                    i = 0;
                }
                if (assembliesCounter >= allAssemblies && typeCounter <= 0)
                    SW.Write("\"" + type.Name.Replace("\\", "") + "\"");
                else
                    SW.Write("\"" + type.Name.Replace("\\", "") + "\"" + ", ");
                counter++;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    SW.WriteLine("};");
    SW.Close();

    Console.WriteLine("\n{0} Types Found", counter.ToString());
    Console.WriteLine("Finish");
    Console.ReadKey();
}

کلمات کلیدی : لیست کلاس ها ، لیست namespace ها ، list of class namespace , C# , VB , .Net Framework

  نظرات ()
IE7 & IE6 CSS Hack نویسنده: محمد - شنبه ٢۸ دی ۱۳۸٧

گاهی پیش میاد که می خواهیم یه خصیصه از CSS فقط در مرورگرهای IE6 یا IE7 اعمال شه :
برای این کار باید از کاراکتر ! برای IE7 و _ برای IE6 استفاده کنیم .
برای مثال کد زیر را ببینید

.body{
  margin-left: 140px; /* برای سایر مرورگرها */
  !margin-left: 13px; /* For IE7 */
  _margin-left: 13px; /* For IE6 */
  }
  نظرات ()
هک کردن دستور max-width در IE6 نویسنده: محمد - شنبه ٢ آذر ۱۳۸٧

تو CSS2 ما میتونیم حداکثر اندازه اشیای صفحه Html رو با دستور CSS یه max-width کنترل کنیم ، اما این دستور در Internet Explorer 6 که متاسفانه هنوز مرورگر محبوبی تو ایران هست کار نمیکنه ، چو IE6 اصلا CSS2 رو پشتیبانی نمیکنه.

اما این راه داره ، و ما میتونیم معادل این دستور رو تو IE6 بنویسیم ( هک کنیم )
به طور مثال ، دستورات زیر معادل همدیگر هستند :

max-width: 350px;
width: expression(this.width > 350 ? 350: true);
  نظرات ()
حذف کامل تبلیغات بلاگ ها نویسنده: محمد - چهارشنبه ۱ اسفند ۱۳۸٦

این کد رو بعد از کلی ور رفتن با فایل های جدید Javascript پرشین بلاگ نوشتم ، رو وب لاگ خودم جواب داد ، امیدوارم برا شما هم جواب ده .

بعد از مدتی این کد رو برای blogfa امتحان کردم . از اونجایی که سیستم تبلیغات پرشین بلاگ و بلاگفا خیلی شبیه همدیگر است رو بلاگفا هم جواب داد . 

فقط کافی هست کد زیر رو بعد از تگ <body> قرار بدین .

توجه داشته باشید که این کد دقیقا باید اولین کد بعد از <body> باشه و بعد از اون تگ های دیگر  . میتونید سورس وب خودم رو مشاهده کنید .

اما جدیدا بلاگفا اجازه وارد کردن این کد ( یا کدهای مشکوک رو که ممکن هست باعث حذف تبلیغاتش بشن ) رو نمیده ، برای همین این کد عملا دیگه برای بلاگفا کارایی نداره. احتمالا تا چند وقت دیگه هم پرشین بلاگ این کار رو می کنه ناراحت

 

<script language="javascript" type="text/javascript">var MdsElement = document.getElementsByTagName("div"); MdsElement[0].style.display = "none";/* http://www.mds-soft.persianblog.ir/ */</script> 



اگر بالایی جواب نداد برای PersianBlog کد زیر رو هم امتحان کنید

<script language="javascript" type="text/javascript">var MdsElement = document.getElementById("divADV"); MdsElement.style.display = "none";/* http://www.mds-soft.persianblog.ir/ */</script> 



1390/09/23 :
پرشین بلاگ دیگه اجازه نمیده تو کد وبلاگ جاوااسکریپت بزاری و عملا دیگه کدهای بالا بی فایده شدن

  نظرات ()
مطالب اخیر دانلود فیلم از یوتیوب با کیفیت 4K و رایگان پلاگین Date Picker با jquery و bootstrap نصب دات نت فریم ورک 3.5 در ویندوز 8 به صورت آفلاین دانلود آپدیت 3 ویژوال استادیو 2013 دانلود آپدیت 2 Visual Studio 2013 Update به صورت آفلاین دانلود آپدیت چهارم ویژوال استادیو Download Visual Studio 2012 Update 4 دانلود ویژوال استادیو Visual Studio 2013 Ultimate با لینک مستقیم دانلود Microsoft Expression Studio Ultimate 4.0 دانلود 6.0 Redgate SQL Prompt، اینتلی سنس intellisense جامع و کامل برای SQL دانلود کامپوننت Telerik WPF 2013 for .Net Q2 به همراه سورس کدها
کلمات کلیدی وبلاگ #c (٥۱) دانلود (٢۱) نمونه کار (٢٠) بریده کد (۱٧) ترفند (۱۳) دانشگاه (۱۳) windows (۱۱) pdf (۱٠) پروژه (٩) visual studio (٩) ebook (٩) flash (٧) sql (٧) php (٧) wpf (٧) javascript (٧) linq (٦) game (٥) software (٥) تقویم (٥) نمونه سوال (٥) net (٤) css (٤) browser (٤) firefox (٤) مقاله (٤) aspnet (٤) هوش مصنوعی (۳) mvc (۳) رمز نگاری (٢) سورک (٢) xaml (٢) آماده همکاری (٢) internet explorer (٢) assembly (٢) hack (٢) calendar (٢) specification (٢) captcha (٢) google (٢) مقایسه (۱) pascal (۱) رپیدشیر (۱) vb (۱) font (۱) proteus (۱) کرک (۱) reflection (۱) mobile (۱) plugin (۱) silverlight (۱) office (۱) smarty (۱) یوتیوب (۱) video tutorial (۱) smiles (۱) jquery (۱) bootstrap (۱)
دوستان من مهدی بخشی
پایگاه اطلاع رسانی یادواره شهدای سورک
مهدی اسکویی(آموزش رایانه)
کیست مرا یاری کند مهدی کاویانی آیات آسمانی شاعران جوان برنامه نویسی در دات نت دغدغه های محرم پرتال زیگور طراح قالب