ASP.NET Web Pages (Razor) sitelerindeki kullanıcı girişini doğrulamaValidating User Input in ASP.NET Web Pages (Razor) Sites

Tom FitzMacken tarafındanby Tom FitzMacken

Bu makalede, kullanıcıların bir ASP.NET Web Pages (Razor) sitesinde HTML formlarında geçerli bilgiler girdiğinizden emin olmak için —, kullanıcılardan aldığınız bilgilerin nasıl doğrulanacağı anlatılmaktadır.This article discusses how to validate information you get from users — that is, to make sure that users enter valid information in HTML forms in an ASP.NET Web Pages (Razor) site.

Öğrenecekleriniz:What you'll learn:

  • Kullanıcı girişinin tanımladığınız doğrulama ölçütleriyle eşleşip eşleşmediğini denetleme.How to check that a user's input matches validation criteria that you define.
  • Tüm doğrulama testlerinin başarılı olup olmadığını belirleme.How to determine whether all validation tests have passed.
  • Doğrulama hatalarını görüntüleme (ve bunları biçimlendirme).How to display validation errors (and how to format them).
  • Doğrudan kullanıcılardan gelmeyen verileri doğrulama.How to validate data that doesn't come directly from users.

Makalesinde sunulan ASP.NET programlama kavramları şunlardır:These are the ASP.NET programming concepts introduced in the article:

  • Validation Yardımcısı.The Validation helper.
  • Html.ValidationSummary ve Html.ValidationMessage yöntemleri.The Html.ValidationSummary and Html.ValidationMessage methods.

Öğreticide kullanılan yazılım sürümleriSoftware versions used in the tutorial

  • ASP.NET Web sayfaları (Razor) 3ASP.NET Web Pages (Razor) 3

Bu öğretici, ASP.NET Web Pages 2 ile de kullanılabilir.This tutorial also works with ASP.NET Web Pages 2.

Bu makale aşağıdaki bölümleri içerir:This article contains the following sections:

Kullanıcı girişi doğrulamasına genel bakışOverview of User Input Validation

Kullanıcılardan bir sayfaya bilgi girmesini isteme (örneğin, bir forma), girdikleri değerlerin geçerli olduğundan emin olmak önemlidir.If you ask users to enter information in a page — for example, into a form — it's important to make sure that the values that they enter are valid. Örneğin, kritik bilgileri eksik olan bir formu işlemek istemezsiniz.For example, you don't want to process a form that's missing critical information.

Kullanıcılar bir HTML biçimine değer girerken, girdikleri değerler dizelerdir.When users enter values into an HTML form, the values that they enter are strings. Çoğu durumda, ihtiyacınız olan değerler, tamsayılar veya tarihler gibi bazı diğer veri türleridir.In many cases, the values you need are some other data types, like integers or dates. Bu nedenle, kullanıcıların girebileceği değerlerin uygun veri türlerine doğru şekilde dönüştürülebileceğinden de emin olmanız gerekir.Therefore, you also have to make sure that the values that users enter can be correctly converted to the appropriate data types.

Ayrıca, değerler üzerinde belirli kısıtlamalara de sahip olabilirsiniz.You might also have certain restrictions on the values. Kullanıcılar, örneğin, doğru bir tamsayı girse bile, değerin belirli bir aralık dahilinde olduğundan emin olmanız gerekebilir.Even if users correctly enter an integer, for example, you might need to make sure that the value falls within a certain range.

CSS stil sınıflarını kullanan doğrulama hataları

Note

Önemli Güvenlik için Kullanıcı girişinin doğrulanması da önemlidir.Important Validating user input is also important for security. Kullanıcıların formlara girebilen değerleri kısıtladığınızda, birisinin sitenizin güvenliğini tehlikeye atabilecek bir değer girebilme olasılığını azaltırsınız.When you restrict the values that users can enter in forms, you reduce the chance that someone can enter a value that can compromise the security of your site.

Kullanıcı girişini doğrulamaValidating User Input

ASP.NET Web Pages 2 ' de, Kullanıcı girişini sınamak için Validator yardımcısını kullanabilirsiniz.In ASP.NET Web Pages 2, you can use the Validator helper to test user input. Temel yaklaşım şunlardır:The basic approach is to do the following:

  1. Hangi giriş öğelerinin (alanları) doğrulamak istediğinizi saptayın.Determine which input elements (fields) you want to validate.

    Genellikle bir formdaki <input> öğelerdeki değerleri doğrularsınız.You typically validate values in <input> elements in a form. Ancak, <select> listesi gibi kısıtlanmış bir öğeden gelen tüm giriş, hatta girişi doğrulamak iyi bir uygulamadır.However, it's a good practice to validate all input, even input that comes from a constrained element like a <select> list. Bu, kullanıcıların bir sayfadaki denetimleri atlayıp form gönderemeyeceği konusunda emin olmanıza yardımcı olur.This helps to make sure that users don't bypass the controls on a page and submit a form.

  2. Sayfa kodunda, Validation Yardımcısı yöntemlerini kullanarak her giriş öğesi için ayrı doğrulama denetimleri ekleyin.In the page code, add individual validation checks for each input element by using methods of the Validation helper.

    Gerekli alanları denetlemek için Validation.RequireField(field, [error message]) (tek bir alan için) veya Validation.RequireFields(field1, field2, ...)) (alanların listesi için) kullanın.To check for required fields, use Validation.RequireField(field, [error message]) (for an individual field) or Validation.RequireFields(field1, field2, ...)) (for a list of fields). Diğer doğrulama türleri için Validation.Add(field, ValidationType)kullanın.For other types of validation, use Validation.Add(field, ValidationType). ValidationTypeiçin aşağıdaki seçenekleri kullanabilirsiniz:For ValidationType, you can use these options:

    Validator.DateTime ([error message])
    Validator.Decimal([error message])
    Validator.EqualsTo(otherField [, error message])
    Validator.Float([error message])
    Validator.Integer([error message])
    Validator.Range(min, max [, error message])
    Validator.RegEx(pattern [, error message])
    Validator.Required([error message])
    Validator.StringLength(length)
    Validator.Url([error message])

  3. Sayfa gönderildiğinde doğrulamanın Validation.IsValiddenetleyerek başarılı olup olmadığını denetleyin:When the page is submitted, check whether validation has passed by checking Validation.IsValid:

    if(IsPost && Validation.IsValid()){
        // Process form submit
    }
    

    Herhangi bir doğrulama hatası varsa, normal sayfa işlemeyi atlayabilirsiniz.If there are any validation errors, you skip normal page processing. Örneğin, sayfanın amacı bir veritabanını güncelleştirmediğinde, tüm doğrulama hataları düzeltilene kadar bunu yapmayın.For example, if the purpose of the page is to update a database, you don't do that until all validation errors have been fixed.

  4. Doğrulama hataları varsa, Html.ValidationSummary veya Html.ValidationMessageveya her ikisini de kullanarak sayfa biçimlendirmesinde hata iletilerini görüntüleyin.If there are validation errors, display error messages in the page's markup by using Html.ValidationSummary or Html.ValidationMessage, or both.

Aşağıdaki örnekte, bu adımları gösteren bir sayfa gösterilmektedir.The following example shows a page that illustrates these steps.

@{
    var message="";
    // Specify validation requirements for different fields.
    Validation.RequireField("coursename", "Class name is required");
    Validation.RequireField("credits", "Credits is required");
    Validation.Add("coursename", Validator.StringLength(5));
    Validation.Add("credits", Validator.Integer("Credits must be an integer"));
    Validation.Add("credits", Validator.Range(1, 5, "Credits must be between 1 and 5"));
    Validation.Add("startDate", Validator.DateTime("Start date must be a date"));

    if (IsPost)  {
        // Before processing anything, make sure that all user input is valid.
        if (Validation.IsValid()) {
            var coursename = Request["coursename"];
            var credits = Request["credits"].AsInt();
            var startDate = Request["startDate"].AsDateTime();
            message += @"For Class, you entered " + coursename;
            message += @"<br/>For Credits, you entered " + credits.ToString();
            message += @"<br/>For Start Date, you entered " + startDate.ToString("dd-MMM-yyyy");

            // Further processing here
        }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Validation Example</title>
  <style>
      body {margin: 1in; font-family: 'Segoe UI'; font-size: 11pt; }
   </style>
</head>
<body>
  <h1>Validation Example</h1>
  <p>This example page asks the user to enter information about some classes at school.</p>
  <form method="post">
    @Html.ValidationSummary()
    <div>
      <label for="coursename">Course name: </label>
      <input type="text"
         name="coursename"
         value="@Request["coursename"]"
      />
      @Html.ValidationMessage("coursename")
    </div>

    <div>
      <label for="credits">Credits: </label>
      <input type="text"
         name="credits"
         value="@Request["credits"]"
      />
      @Html.ValidationMessage("credits")
    </div>

    <div>
      <label for="startDate">Start date: </label>
      <input type="text"
         name="startDate"
         value="@Request["startDate"]"
      />
      @Html.ValidationMessage("startDate")
    </div>

   <div>
      <input type="submit" value="Submit" class="submit" />
    </div>

    <div>
      @if(IsPost){
        <p>@Html.Raw(message)</p>
      }
    </div>
  </form>
</body>
</html>

Doğrulamanın nasıl çalıştığını görmek için bu sayfayı çalıştırın ve bilinçli olarak hata oluşturun.To see how validation works, run this page and deliberately make mistakes. Örneğin, bir kurs adı girmeyi unuttuğunuzda, bir, girdiğinizde ve geçersiz bir tarih girerseniz, sayfa şöyle görünür:For example, here's what the page looks like if you forget to enter a course name, if you enter an, and if you enter an invalid date:

İşlenmiş sayfada doğrulama hataları

Istemci tarafı doğrulama eklemeAdding Client-Side Validation

Varsayılan olarak, Kullanıcı girişi, kullanıcılar sayfayı gönderdikten sonra onaylanır — diğer bir deyişle, doğrulama sunucu kodunda gerçekleştirilir.By default, user input is validated after users submit the page — that is, the validation is performed in server code. Bu yaklaşımın bir dezavantajı, kullanıcıların sayfayı gönderdikten sonra bir hata yaptığını bilmez.A disadvantage of this approach is that users don't know that they've made an error until after they submit the page. Bir form uzun veya karmaşık ise, yalnızca sayfa gönderildikten sonra hataları bildirmek Kullanıcı için kullanışlı olabilir.If a form is long or complex, reporting errors only after the page is submitted can be inconvenient to the user.

İstemci betiği içinde doğrulama gerçekleştirmek için destek ekleyebilirsiniz.You can add support to perform validation in client script. Bu durumda, kullanıcı tarayıcıda çalıştığı için doğrulama gerçekleştirilir.In that case, the validation is performed as users work in the browser. Örneğin, bir değerin tamsayı olması gerektiğini varsayalım.For example, suppose you specify that a value should be an integer. Kullanıcı tamsayı olmayan bir değer girerse, Kullanıcı giriş alanından ayrıldığında hata bildirilir.If a user enters a non-integer value, the error is reported as soon as the user leaves the entry field. Kullanıcılar, bunlar için uygun olan anında geri bildirim alırlar.Users get immediate feedback, which is convenient for them. İstemci tabanlı doğrulama, kullanıcının birden çok hatayı düzeltmek için formu kaç kez göndermesi gerektiğini de azaltabilir.Client-based validation can also reduce the number of times that the user has to submit the form to correct multiple errors.

Note

İstemci tarafı doğrulaması kullanıyor olsanız bile, doğrulama her zaman sunucu kodunda da gerçekleştirilir.Even if you use client-side validation, validation is always also performed in server code. Sunucu kodunda doğrulamanın gerçekleştirilmesi, kullanıcıların istemci tabanlı doğrulamayı atlaması durumunda bir güvenlik ölçümüdür.Performing validation in server code is a security measure, in case users bypass client-based validation.

  1. Aşağıdaki JavaScript kitaplıklarını sayfaya kaydedin:Register the following JavaScript libraries in the page:

    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js">
    </script>
    <script
    src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.js">
    </script>
    <script src="~/Scripts/jquery.validate.unobtrusive.js">
    </script>
    

    Kütüphanelerin ikisi bir Content Delivery Network (CDN) ile yüklenebilir, bu nedenle bilgisayarınızda veya sunucunuzda olması gerekmez.Two of the libraries are loadable from a content delivery network (CDN), so you don't necessarily have to have them on your computer or server. Ancak, jQuery. Validate. unobtrusive. js' nin yerel kopyasına sahip olmanız gerekir.However, you must have a local copy of jquery.validate.unobtrusive.js. Kitaplığı içeren bir WebMatrix şablonuyla ( Başlatıcı site gibi) çalışmıyorsanız, Başlatıcı siteyitemel alan bir Web sayfaları sitesi oluşturun.If you are not already working with a WebMatrix template (like Starter Site ) that includes the library, create a Web Pages site that's based on Starter Site. Sonra . js dosyasını geçerli sitenize kopyalayın.Then copy the .js file to your current site.

  2. Biçimlendirme ' de, doğruladığınızı her öğe için Validation.For(field)bir çağrı ekleyin.In markup, for each element that you're validating, add a call to Validation.For(field). Bu yöntem, istemci tarafı doğrulama tarafından kullanılan öznitelikleri yayar.This method emits attributes that are used by client-side validation. (Gerçek JavaScript kodunu yayma yerine, yöntem data-val-...gibi öznitelikleri yayar.(Rather than emitting actual JavaScript code, the method emits attributes like data-val-.... Bu öznitelikler, işi yapmak için jQuery kullanan istemci doğrulamasını destekler.)These attributes support unobtrusive client validation that uses jQuery to do the work.)

Aşağıdaki sayfada, daha önce gösterilen örneğe istemci doğrulama özelliklerinin nasıl ekleneceği gösterilmektedir.The following page shows how to add client validation features to the example shown earlier.

@{
    // Note that client validation as implemented here will work only with
    // ASP.NET Web Pages 2.

    var message="";
    // Specify validation requirements for different fields.
    Validation.RequireField("coursename", "Class name is required");
    Validation.RequireField("credits", "Credits is required");
    Validation.Add("coursename", Validator.StringLength(5));
    Validation.Add("credits", Validator.Integer("Credits must be an integer"));
    Validation.Add("credits", Validator.Range(1, 5, "Credits must be between 1 and 5"));
    Validation.Add("startDate", Validator.DateTime("Start date must be a date"));

    if (IsPost)  {
        // Before processing anything, make sure that all user input is valid.
        if (Validation.IsValid()) {
            var coursename = Request["coursename"];
            var credits = Request["credits"].AsInt();
            var startDate = Request["startDate"].AsDateTime();
            message += @"For Class, you entered " + coursename;
            message += @"<br/>For Credits, you entered " + credits.ToString();
            message += @"<br/>For Start Date, you entered " + startDate.ToString("dd-MMM-yyyy");

            // Further processing here
        }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Validation Example with Client Validation</title>
  <style>
      body {margin: 1in; font-family: 'Segoe UI'; font-size: 11pt; }
   </style>
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js"></script>
    <script
        src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.js">
    </script>
    <script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
</head>
<body>
  <h1>Validation Example with Client Validation</h1>
  <p>This example page asks the user to enter information about some classes at school.</p>
  <form method="post">
    @Html.ValidationSummary()
    <div>
      <label for="coursename">Course name: </label>
      <input type="text"
         name="coursename"
         value="@Request["coursename"]"
         @Validation.For("coursename")
      />
      @Html.ValidationMessage("coursename")
    </div>

    <div>
      <label for="credits">Credits: </label>
      <input type="text"
         name="credits"
         value="@Request["credits"]"
         @Validation.For("credits")
      />
      @Html.ValidationMessage("credits")
    </div>

    <div>
      <label for="startDate">Start date: </label>
      <input type="text"
         name="startDate"
         value="@Request["startDate"]"
         @Validation.For("startDate")
      />
      @Html.ValidationMessage("startDate")
    </div>

   <div>
      <input type="submit" value="Submit" class="submit" />
    </div>

    <div>
      @if(IsPost){
        <p>@Html.Raw(message)</p>
      }
    </div>
  </form>
</body>
</html>

İstemci üzerinde tüm doğrulama denetimleri çalıştırılmadı.Not all validation checks run on the client. Özellikle, veri türü doğrulama (tamsayı, tarih vb.) istemcide çalıştırılmayın.In particular, data-type validation (integer, date, and so on) don't run on the client. Aşağıdaki denetimler hem istemci hem de sunucu üzerinde çalışır:The following checks work on both the client and server:

  • Required
  • Range(minValue, maxValue)
  • StringLength(maxLength[, minLength])
  • Regex(pattern)
  • EqualsTo(otherField)

Bu örnekte, geçerli bir tarih testi istemci kodunda çalışmayacaktır.In this example, the test for a valid date won't work in client code. Ancak, test sunucu kodunda gerçekleştirilir.However, the test will be performed in server code.

Doğrulama hatalarını biçimlendirmeFormatting Validation Errors

Aşağıdaki ayrılmış adlara sahip CSS sınıfları tanımlayarak, doğrulama hatalarının nasıl görüntülendiğini denetleyebilirsiniz:You can control how validation errors are displayed by defining CSS classes that have the following reserved names:

  • field-validation-error.field-validation-error. Bir hata görüntülenirken Html.ValidationMessage yönteminin çıkışını tanımlar.Defines the output of the Html.ValidationMessage method when it's displaying an error.
  • field-validation-valid.field-validation-valid. Hata olmadığında Html.ValidationMessage yönteminin çıkışını tanımlar.Defines the output of the Html.ValidationMessage method when there is no error.
  • input-validation-error.input-validation-error. Bir hata olduğunda <input> öğelerinin nasıl işleneceğini tanımlar.Defines how <input> elements are rendered when there's an error. (Örneğin, bir <girişi> öğesinin arka plan rengini, değeri geçersizse farklı bir renge ayarlamak için bu sınıfı kullanabilirsiniz.) Bu CSS sınıfı yalnızca istemci doğrulaması sırasında kullanılır (ASP.NET Web Pages 2).(For example, you can use this class to set the background color of an <input> element to a different color if its value is invalid.) This CSS class is used only during client validation (in ASP.NET Web Pages 2).
  • input-validation-valid.input-validation-valid. Hata olmadığında <input> öğelerinin görünümünü tanımlar.Defines the appearance of <input> elements when there is no error.
  • validation-summary-errors.validation-summary-errors. Html.ValidationSummary yönteminin çıkışını tanımlar ve bu, hataların bir listesini görüntüler.Defines the output of the Html.ValidationSummary method it's displaying a list of errors.
  • validation-summary-valid.validation-summary-valid. Hata olmadığında Html.ValidationSummary yönteminin çıkışını tanımlar.Defines the output of the Html.ValidationSummary method when there is no error.

Aşağıdaki <style> bloğu hata koşulları kurallarını gösterir.The following <style> block shows rules for error conditions.

<style>
.validation-summary-errors {
  border:2px solid red;
  color:red;
  font-weight:bold;
  margin:6px;
  width:30%;
}

.field-validation-error{
  color:red;
   font-weight:bold;
   background-color:yellow;
}

.input-validation-error{
  color:red;
  font-weight:bold;
  background-color:pink;
}
</style>

Bu stil bloğunu, makalenin önceki kısımlarında bulunan örnek sayfalara dahil ederseniz, hata görünümü aşağıdaki çizimde gösterildiği gibi görünür:If you include this style block in the example pages from earlier in the article, the error display will look like the following illustration:

CSS stil sınıflarını kullanan doğrulama hataları

Note

ASP.NET Web Pages 2 ' de istemci doğrulaması kullanmıyorsanız, <input> öğeleri için CSS sınıfları (input-validation-error ve input-validation-valid hiçbir etkiye sahip olmaz.If you're not using client validation in ASP.NET Web Pages 2, the CSS classes for the <input> elements (input-validation-error and input-validation-valid don't have any effect.

Statik ve dinamik hata görüntülemeStatic and Dynamic Error Display

CSS kuralları validation-summary-errors ve validation-summary-validgibi çiftler halinde gelir.The CSS rules come in pairs, such as validation-summary-errors and validation-summary-valid. Bu çiftler her iki koşul için kurallar tanımlamanızı sağlar: bir hata durumu ve "normal" (hata olmayan) koşulu.These pairs let you define rules for both conditions: an error condition and a "normal" (non-error) condition. Hata olmadan biçimlendirmenin her zaman bir hata olmasa bile, her zaman işlenip işlenmeyeceğini anlamak önemlidir.It's important to understand that the markup for the error display is always rendered, even if there are no errors. Örneğin, bir sayfada biçimlendirme içinde bir Html.ValidationSummary yöntemi varsa, sayfa kaynağı ilk kez istendiği zaman bile aşağıdaki biçimlendirmeyi içerecektir:For example, if a page has an Html.ValidationSummary method in the markup, the page source will contain the following markup even when the page is requested for the first time:

<div class="validation-summary-valid" data-valmsg-summary="true"><ul></ul></div>

Diğer bir deyişle, Html.ValidationSummary yöntemi her zaman bir <div> öğesi ve bir liste oluşturur, bu da hata listesi boş olsa bile.In other words, the Html.ValidationSummary method always renders a <div> element and a list, even if the error list is empty. Benzer şekilde, Html.ValidationMessage yöntemi her zaman bir alan hatası için bir yer tutucu olarak bir <span> öğesi oluşturur, aksi halde bir hata yoktur.Similarly, the Html.ValidationMessage method always renders a <span> element as a placeholder for an individual field error, even if there is no error.

Bazı durumlarda, bir hata iletisi görüntülenirken sayfanın yeniden akıtılmasına neden olabilir ve sayfadaki öğelerin etrafında hareket olmasına neden olabilir.In some situations, displaying an error message can cause the page to reflow and can cause elements on the page to move around. -valid biten CSS kuralları, bu sorunu önlemeye yardımcı olabilecek bir düzen tanımlamanızı sağlar.The CSS rules that end in -valid let you define a layout that can help prevent this problem. Örneğin, field-validation-error tanımlayabilir ve field-validation-valid her ikisi de aynı sabit boyuta sahip olabilir.For example, you can define field-validation-error and field-validation-valid to both have the same fixed size. Bu şekilde, alanın görüntüleme alanı statiktir ve bir hata iletisi görüntülenirse sayfa akışını değiştirmez.That way, the display area for the field is static and won't change the page flow if an error message is displayed.

Doğrudan kullanıcılardan gelmeyen verileri doğrulamaValidating Data That Doesn't Come Directly from Users

Bazen bir HTML formundan doğrudan gelmeyen bilgileri doğrulamanız gerekebilir.Sometimes you have to validate information that doesn't come directly from an HTML form. Tipik bir örnek, aşağıdaki örnekte olduğu gibi bir sorgu dizesinde bir değerin geçirildiği bir sayfasıdır:A typical example is a page where a value is passed in a query string, as in the following example:

http://server/myapp/EditClassInformation?classid=1022

Bu durumda, sayfaya geçirilen değerin (burada, classiddeğeri için 1022) geçerli olduğundan emin olmak istersiniz.In this case, you want to make sure that the value that's passed to the page (here, 1022 for the value of classid) is valid. Bu doğrulamayı gerçekleştirmek için Validation yardımcısını doğrudan kullanamazsınız.You can't directly use the Validation helper to perform this validation. Bununla birlikte, doğrulama sisteminin, doğrulama hatası iletilerini görüntüleme özelliği gibi diğer özelliklerini de kullanabilirsiniz.However, you can use other features of the validation system, like the ability to display validation error messages.

Note

Önemli Form alanı değerleri, sorgu dizesi değerleri ve tanımlama bilgisi değerleri de dahil olmak üzere herhangi bir kaynaktan aldığınız değerleri her zaman doğrulayın.Important Always validate values that you get from any source, including form-field values, query-string values, and cookie values. Kişilerin bu değerleri değiştirmesi oldukça kolaydır (Belki de kötü amaçlı amaçlar için).It's easy for people to change these values (perhaps for malicious purposes). Bu nedenle, uygulamanızı korumak için bu değerleri denetlemeniz gerekir.So you must check these values in order to protect your application.

Aşağıdaki örnek, bir sorgu dizesinde iletilen bir değeri nasıl doğrulayacağınızı gösterir.The following example shows how you might validate a value that's passed in a query string. Kod, değerin boş ve tamsayı olduğunu sınar.The code tests that the value is not empty and that it's an integer.

if(!IsPost){
    if(!Request.QueryString["classid"].IsEmpty() && Request.QueryString["classid"].IsInt()) {
        // Process the value
    }
    else{
        Validation.AddFormError("No class was selected.");
    }
}

İstek bir form gönderimi olmadığında testin gerçekleştirildiğinden (if(!IsPost)) dikkat edin.Notice that the test is performed when the request is not a form submission (if(!IsPost)). Bu test sayfa istendiğinde ilk kez geçer, ancak istek bir form gönderimi olduğunda bunu yapmayabilir.This test would pass the first time that the page is requested, but not when the request is a form submission.

Bu hatayı göstermek için Validation.AddFormError("message")çağırarak doğrulama hataları listesine hatayı ekleyebilirsiniz.To display this error, you can add the error to the list of validation errors by calling Validation.AddFormError("message"). Sayfa Html.ValidationSummary yöntemine bir çağrı içeriyorsa, hata bir kullanıcı girişi doğrulama hatası gibi görüntülenir.If the page contains a call to the Html.ValidationSummary method, the error is displayed there, just like a user-input validation error.

Ek KaynaklarAdditional Resources

ASP.NET Web Pages sitelerinde HTML formlarıyla çalışmaWorking with HTML Forms in ASP.NET Web Pages Sites