国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Backend-Entwicklung C#.Net-Tutorial Verwendung der MVC-Verifizierungscodeklasse von asp.net

Verwendung der MVC-Verifizierungscodeklasse von asp.net

Jan 13, 2017 pm 02:07 PM

Best?tigungscode-Klasse

namespace QJW.VerifyCode
{
  //用法:
  //public FileContentResult CreateValidate()
  //{
  //  ValidateCode vCode = new ValidateCode();
  //  string code = vCode.CreateValidateCode(5);
  //  Session["ValidateCode"] = code;
  //  byte[] bytes = vCode.CreateValidateGraphic(code);
  //  return File(bytes, "image/JPEG");
  //}
 
 
  public class ValidateCode
  {
    public ValidateCode()
    {
    }
    /// <summary>
    /// 驗(yàn)證碼的最大長度
    /// </summary>
    public int MaxLength
    {
      get { return 10; }
    }
    /// <summary>
    /// 驗(yàn)證碼的最小長度
    /// </summary>
    public int MinLength
    {
      get { return 1; }
    }
    /// <summary>
    /// 生成驗(yàn)證碼
    /// </summary>
    /// <param name="length">指定驗(yàn)證碼的長度</param>
    /// <returns></returns>
    public string CreateValidateCode(int length)
    {
      int[] randMembers = new int[length];
      int[] validateNums = new int[length];
      string validateNumberStr = "";
      //生成起始序列值
      int seekSeek = unchecked((int)DateTime.Now.Ticks);
      Random seekRand = new Random(seekSeek);
      int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
      int[] seeks = new int[length];
      for (int i = 0; i < length; i++)
      {
        beginSeek += 10000;
        seeks[i] = beginSeek;
      }
      //生成隨機(jī)數(shù)字
      for (int i = 0; i < length; i++)
      {
        Random rand = new Random(seeks[i]);
        int pownum = 1 * (int)Math.Pow(10, length);
        randMembers[i] = rand.Next(pownum, Int32.MaxValue);
      }
      //抽取隨機(jī)數(shù)字
      for (int i = 0; i < length; i++)
      {
        string numStr = randMembers[i].ToString();
        int numLength = numStr.Length;
        Random rand = new Random();
        int numPosition = rand.Next(0, numLength - 1);
        validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
      }
      //生成驗(yàn)證碼
      for (int i = 0; i < length; i++)
      {
        validateNumberStr += validateNums[i].ToString();
      }
      return validateNumberStr;
    }
    /// <summary>
    /// 創(chuàng)建驗(yàn)證碼的圖片
    /// </summary>
    /// <param name="containsPage">要輸出到的page對象</param>
    /// <param name="validateNum">驗(yàn)證碼</param>
    public byte[] CreateValidateGraphic(string validateCode)
    {
      Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
      Graphics g = Graphics.FromImage(image);
      try
      {
        //生成隨機(jī)生成器
        Random random = new Random();
        //清空圖片背景色
        g.Clear(Color.White);
        //畫圖片的干擾線
        for (int i = 0; i < 25; i++)
        {
          int x1 = random.Next(image.Width);
          int x2 = random.Next(image.Width);
          int y1 = random.Next(image.Height);
          int y2 = random.Next(image.Height);
          g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
        }
        Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
        LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
         Color.Blue, Color.DarkRed, 1.2f, true);
        g.DrawString(validateCode, font, brush, 3, 2);
        //畫圖片的前景干擾點(diǎn)
        for (int i = 0; i < 100; i++)
        {
          int x = random.Next(image.Width);
          int y = random.Next(image.Height);
          image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }
        //畫圖片的邊框線
        g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
        //保存圖片數(shù)據(jù)
        MemoryStream stream = new MemoryStream();
        image.Save(stream, ImageFormat.Jpeg);
        //輸出圖片流
        return stream.ToArray();
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
    /// <summary>
    /// 得到驗(yàn)證碼圖片的長度
    /// </summary>
    /// <param name="validateNumLength">驗(yàn)證碼的長度</param>
    /// <returns></returns>
    public static int GetImageWidth(int validateNumLength)
    {
      return (int)(validateNumLength * 12.0);
    }
    /// <summary>
    /// 得到驗(yàn)證碼的高度
    /// </summary>
    /// <returns></returns>
    public static double GetImageHeight()
    {
      return 22.5;
    }
  }
}

Verwendung

public FileContentResult CreateValidate()
{
  ValidateCode vCode = new ValidateCode();
  string code = vCode.CreateValidateCode(5);
  Session["ValidateCode"] = code;
  byte[] bytes = vCode.CreateValidateGraphic(code);
 
  return File(bytes, "image/JPEG");
}

HTML
;img id="safecode" src="/common/CreateValidate" alt="" />
JS anzeigen

function reloadcode() {
    var verify = document.getElementById(&#39;safecode&#39;);
    verify.setAttribute(&#39;src&#39;, &#39;/common/CreateValidate?&#39; + Math.random());
  }

Das Obige ist der gesamte Inhalt dieses Artikels Ich hoffe, dass es allen beim Lernen hilft und ich hoffe, dass jeder die chinesische PHP-Website unterstützt.

Weitere Artikel zur Verwendung der MVC-Verifizierungscodeklasse von asp.net finden Sie auf der chinesischen PHP-Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Bedeutung hat das Keyword in C# zum Erstellen von Iteratoren? Welche Bedeutung hat das Keyword in C# zum Erstellen von Iteratoren? Jun 19, 2025 am 12:17 AM

Sie haben KeeKeywordinc#vereinfacht, dass byAutomatischgeneratestatemachinethatenableSlazyEvaluation.1.itallowsReturningEMSonatimeuchteyieldReturn, PaeteExecutionBetweeneachItem, die ISIDEALFORGARGARGEordynamic -Sequences.2.yieldbreakcanBeusus

Was ist Abh?ngigkeitsinjektion (DI) und wie kann sie in C# implementiert werden (z. B. unter Verwendung der integrierten DI in ASP.NET Core)? Was ist Abh?ngigkeitsinjektion (DI) und wie kann sie in C# implementiert werden (z. B. unter Verwendung der integrierten DI in ASP.NET Core)? Jun 30, 2025 am 02:06 AM

Abh?ngigkeitsinjektion (DI) Inc#isAdesignPatternThatenhancesModularit?t, Testbarkeit und Maschinenbarkeit von ClasseSestoreceivedEpendenciesexternally.1.DiPromotesLoosecoUPlingByDecoUplingObjectCreationFromusage.2itsimplifiedeDing ThroughthroughthroughthroughthroughthmockoBectinjectinjectinjectinjekte

Was ist der Zweck der idisposablen Schnittstelle und der Verwendung von Anweisung in C# für das Ressourcenmanagement? Was ist der Zweck der idisposablen Schnittstelle und der Verwendung von Anweisung in C# für das Ressourcenmanagement? Jun 27, 2025 am 02:18 AM

Die Rolle von idisposbar und in C# besteht darin, nicht verwaltete Ressourcen effizient und deterministisch zu verwalten. 1. idisposable bietet die Dispose () -Methode, damit die Klasse klar definieren kann, wie nicht verwaltete Ressourcen freigegeben werden k?nnen. 2. Die Verwendung der Verwendung stellt sicher, dass Dispose () automatisch aufgerufen wird, wenn das Objekt aus dem Zielfernrohr ist, das Ressourcenmanagement vereinfacht und Leckagen vermieden wird. 3. Wenn Sie es verwenden, beachten Sie bitte, dass das Objekt iDisposable implementieren muss, mehrere Objekte deklarieren kann und immer die Verwendung für Typen wie StreamReader verwenden sollte. 4. Zu den h?ufigen Best Practices geh?rt es, sich nicht auf Destruktoren zu verlassen, um die Verschachtelungen korrekt zu behandeln und das Disol -Muster (Dispose) zu implementieren.

Wie verbessern Lambda -Ausdrücke und LINQ (Language Integrated Query) die Datenmanipulation in C#? Wie verbessern Lambda -Ausdrücke und LINQ (Language Integrated Query) die Datenmanipulation in C#? Jun 20, 2025 am 12:16 AM

LambdaexpressionsandlinqSimplifyDatamanipulationInC#ByenablingConcise, lesbar und efficienzidcode.1.lambdaexpressionslowinLineFunctionDefinitions, MakeTeSasierTopassLogicasargumentsfor -filtering, sortieren, aggategategategategorientiert

Was sind nullable Referenztypen (NRTs) in C# 8 und wie helfen sie, NullRreferencexception zu verhindern? Was sind nullable Referenztypen (NRTs) in C# 8 und wie helfen sie, NullRreferencexception zu verhindern? Jun 21, 2025 am 12:36 AM

Nullablereferencetypes(NRTs)inC#8 helpcatchNullReferenceExceptionerrorsatcompiletimebymakingreferencetypesnon-nullablebydefault,requiringexplicitdeclarationfornullability.NRTsmustbeenabledeitherinthe.csprojfilewithenableoratthetopofa.csfileusing#null

Was sind einige h?ufige Fallstricke oder Anti-Muster zu vermeiden, wenn sie sich mit C#entwickeln? Was sind einige h?ufige Fallstricke oder Anti-Muster zu vermeiden, wenn sie sich mit C#entwickeln? Jun 23, 2025 am 12:05 AM

Vier übliche "Anti-Muster" -Probleme in der C# -entwicklung müssen vermieden werden. Erstens führt der unangemessene Gebrauch von Async/Auseait zu Deadlocks oder Leistungsverschlechterungen. Wir sollten uns an das Prinzip der vollst?ndigen Asynchronit?t halten, configureAwait (falsch) konfigurieren und die Benennung standardisieren. Zweitens beeinflusst eine überm??ige Abh?ngigkeit von VAR die Lesbarkeit und deklare und vereint die Teamspezifikationen explizit, wenn der Typ unklar ist. Drittens führt die falsche Verwendung von Entsus- und Ressourcenverwaltung zu Leckagen, und die Anwendungsanweisung sollte korrekt verwendet werden und der iDisposable Standardmodus sollte implementiert werden. Viertens verursacht der Missbrauch statischer Klassen oder Singletons Testschwierigkeiten, und die Abh?ngigkeitsinjektion, die Staatenlosigkeit oder den Lebenszyklus, der von Containern verwaltet wird, sollte Priorit?t einger?umt werden. Das Vermeiden dieser Missverst?ndnisse kann die Qualit?t und Wartung der Code erheblich verbessern.

Wie k?nnen Span  und Speicher  in C# verwendet werden, um die Speicherverwendung zu optimieren und Zuordnungen zu reduzieren? Wie k?nnen Span und Speicher in C# verwendet werden, um die Speicherverwendung zu optimieren und Zuordnungen zu reduzieren? Jun 18, 2025 am 12:11 AM

Span und Speicher verbessern die C# -Leistung durch Reduzierung der Speicherzuweisung. 1.span vermeidet das Array-Kopieren und liefert leichte Verweise auf den vorhandenen Speicher, der für die Parsen von Bin?rprotokollen, Stringoperationen und Hochleistungs-Puffermanagement geeignet ist. 2. Speicher unterstützt das übergeben von Speicherschnitten über asynchrone Methoden, was für Szenarien geeignet ist, in denen flexiblere Lebenszyklen erforderlich sind. 3. Beide reduzieren den GC -Druck, optimieren Sie die Leistung, indem Sie Puffer wiederverwenden und ein vorübergehendes Kopieren vermeiden. 4. Die Span ist auf den Stapel beschr?nkt und kann nicht in Klassen gespeichert oder in asynchronen Methoden verwendet werden. Vermeiden Sie vorsichtig, um Neuzuweisungsoperationen wie Calling.toArray () zu vermeiden.

K?nnen Sie die soliden Prinzipien und ihre Anwendung in C#-objektorientiertem Design erkl?ren? K?nnen Sie die soliden Prinzipien und ihre Anwendung in C#-objektorientiertem Design erkl?ren? Jun 25, 2025 am 12:47 AM

Solides Prinzip sind fünf Entwurfsprinzipien, um die Wartbarkeit der Code und die Skalierbarkeit bei objektorientierter Programmierung zu verbessern. Sie sind: 1. Das Prinzip der einzelnen Verantwortung (SRP) verlangt, dass die Klasse nur eine Verantwortung übernimmt, z. 2. Das ?ffnungs- und Schlussprinzip (OCP) betont, dass die Erweiterung durch Schnittstellen oder abstrakte Klassen unterstützt wird, ohne den ursprünglichen Code zu ?ndern, z. 3. Das Richter -Ersatzprinzip (LSP) erfordert, dass die Unterklasse die übergeordnete Klasse ersetzen kann, ohne die Logik zu zerst?ren, z. 4. Das Interface-Isolationsprinzip (ISP) befürwortet die Definition feink?rniger Schnittstellen, wie z. 5. Das Abh?ngigkeitsinversionsprinzip (DIP) befürwortet die

See all articles