2013-07-25 7 views
0

Для получения опыта работы я генерирую случайные числа и сравниваю их суммы при подаче, но каждый раз, когда я нажимаю кнопку, меняются случайные числа. Как я могу прекратить это делать? Я рассматривал разные эксперименты, но не смог этого сделать. Вот мой класс код случайных чисел:Как я могу использовать свою собственную случайную капчу в ASP.NET?

public class Captcha 
{ 
    int num1, num2, total; 
    public int N1 
    { 
     get 
     { 
      return num1; 
     } 
    } 
    public int N2 
    { 
     get 
     { 
      return num2; 
     } 
    } 
    public int Total 
    { 
     get 
     { 
      return total; 
     } 
    } 
    Random r = new Random(); 
    public Captcha() 
    { 
     Random r = new Random(); 
     num1 = r.Next(1, 11) * 10; 
     num2 = r.Next(1, 11); 
     total = num1 + num2; 
    } 

} 

Теперь я использую этот на Page_Load событие так:

Captcha c = new Captcha(); 
protected void Page_Load(object sender, EventArgs e) 
{ 
    Label2.Text = c.N1.ToString(); 
    Label3.Text = c.N2.ToString(); 

} 

Как я совершил этот один?

Спасибо.

+0

Вы можете разместить свой код кнопки клик? – samar

+0

Код кнопки делает много вещей, но я использую сопоставление сравнения, так что это как IF (TextBox2.Text.Equals (c.Total.ToString())) {...... выполнение другого кода ...} –

ответ

0

Поскольку вы создаете объект Captcha вне события загрузки страницы, он будет воссоздаваться всякий раз, когда происходит вызов страницы.

Возможно, вам известно, что Интернет не имеет отношения к штату, поэтому всякий раз, когда возникает вызов страницы, создается новая страница и, следовательно, новый объект Captcha. Таким образом, вам необходимо сохранить объект Captcha в каком-то государственном управлении, таком как состояние представления.

Ваш код должен быть примерно таким.

Captcha c; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     c = new Captcha(); 
     Label2.Text = c.N1.ToString(); 
     Label3.Text = c.N2.ToString(); 

     ViewState["c"] = c; 
    } 
} 

Затем нажмите кнопку «ОК», и вы нажмете кнопку «вернуться» на «c». Что-то вроде этого.

//button click 
c = (Captcha)ViewState["c"]; 
if(TextBox1.Text.Equals......) 

Возможно, вам нужно пометить свой класс Captcha как сериализуемый, поскольку это может вызвать ошибку.

Надеюсь, это поможет.

С уважением,

Samar

+0

Я думал об этом, но если я создам новый объект Captcha, тогда числа и сумма будут изменены. Обратитесь к моему конструктору. –

+0

Отметьте мой отредактированный пост выше. – samar

+0

Я посмотрю. Благодарю. –

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