2013-05-13 2 views
0

Я новичок в использовании C#, применяемый с ASP.NET, поэтому я прошу вас о всех терпениях.Внешний класс, используемый страницей ASP.NET

Вначале контекст: я разработал страницу ASP, которая берет для подтверждения имени пользователя и пароля (как показано в первом фрагменте кода). Для эффектов этого вопроса не имеет значения, что символы в поле пароля , это не имеет значения).

index.aspx

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="Login" runat="server"> 
    <div><table> 
    <tr> 
    <td>User</td> 
    <td><asp:TextBox ID="User" runat="server"></asp:TextBox></td> 
    </tr> 
    <tr> 
    <td>Password</td> 
    <td><asp:TextBox ID="Pass" runat="server"></asp:TextBox></td> 
    </tr> 
    <tr> 
    <td></td> 
    <td><asp:Button ID="LoginButton" runat="server" Text="Login" 
     onclick="LoginButton_Click" /></td> 
    </tr></table> 
    </div> 
    </form> 
    </body> 
    </html> 

Затем после нажатия на кнопку «Войти», строки, приведенные в обоих текстовых полей сравниваются с конкретными строками, и если обе строки совпадают, то Войти успешно (как показанный во втором фрагменте кода).

Index.aspx.WebDesigner.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication7 
{ 
    public partial class Index : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void LoginBoton_Click(object sender, EventArgs e) 
     { 
      String user = User.Text; 
      String password = Pass.Text; 

      String uservalid = "Carlos"; 
      String passvalid = "236"; 

      if((user.Equals(uservalid)) && (password.Equals(passvalid))) 
       Response.Redirect("Valid.aspx"); 
      else 
       Response.Redirect("Invalid.aspx"); 

     } 
    } 
} 

Давайте предположим, в какой-то момент мне нужно создать новый класс специально для проверки логин (я знаю, что это может быть сделано с Java), и я буду использовать его для своей страницы. Нужно ли учитывать, что в этом случае я уже использую Index.aspx.WebDesigner.cs? И если это необходимо, или у меня нет выбора, кроме как использовать этот новый класс, как я могу его создать?

ответ

2

Создание классов в C# очень похоже на создание классов на любом современном, строго типизированном языке программирования OO. Сначала вы определяете класс, а затем создаете его. Существует много разных способов воссоздать валидацию в вашем вопросе, вот один из них.

Вот определение класса

public class Validator 
{ 
    private const string Username = "Carlos"; 
    private const string Password = "236"; 

    public bool Validate(string user, string pass) 
    { 
    return (user == Username && pass == Password); 
    } 
} 

Чтобы создать экземпляр и использовать класс в коде (обратите внимание на использование ternary conditional operator вместо если/иначе, это сохраняет код кратким и читабельным)

protected void LoginBoton_Click(object sender, EventArgs e) 
{ 
    //instantiate the class defined above 
    var validator = new Validator(); 

    //find the next page to redirect to 
    var redirectTo = validator.Validate(User.Text, Pass.Text) ? "Valid.aspx" : "Invalid.aspx"; 

    //redirect the user 
    Response.Redirect(redirectTo); 
} 

C# - это глубокий язык с нежной кривой обучения, вы можете найти хороший учебник или книгу на эту тему. There are a number of introductory tutorials from Microsoft that may be helpful.

Другая вещь, чтобы отметить, что слово extern это ключевое слово в C#, что указывает на управляемый код (то есть код, который работает в CLR) хочет загружать и выполнять неуправляемый код (то есть код, который работает изначально).

+0

Я говорил «extern» класс, нет в указанном вами контексте, но в контексте, что класс полностью не зависит от ASP-страницы. Но в любом случае, спасибо за акклиматизацию. – SealCuadrado

Смежные вопросы