ASP.net текстовое поле с диапазоном textmode продолжает сбрасывать свое значение - PullRequest
0 голосов
/ 12 июня 2019

Привет, я занят созданием проекта asp.net, который должен получить три значения от пользователя.Я использую текстовое поле с текстовым режимом диапазона, чтобы получить эти значения, и в первый раз, когда пользователь перемещает ползунок, он работает отлично, но после этого пользователь больше не может настраивать любое из текстовых полей.

Я попытался использовать расширитель ползунка, но это, похоже, не работает, и отображается только текстовое поле.

мой HTML-код для создания текстовых полей и надписей, показывающих значение

body>
<form id="form1" runat="server">
            <p>
                Quantum 1 Length:&nbsp;&nbsp;
                <asp:TextBox ID="txtVal1" runat="server" TextMode="Range" min="1" Max="8" OnTextChanged="txtVal1_TextChanged1" AutoPostBack="True"></asp:TextBox>
                &nbsp;&nbsp;&nbsp;
                <asp:Label ID="lblVal1" runat="server" Text="/////"></asp:Label>

            </p>

            <p>
                Quantum 2 Length:&nbsp;&nbsp;
                <asp:TextBox ID="txtVal2" runat="server" TextMode="Range" min="1" Max="8" OnTextChanged="txtVal2_TextChanged1" AutoPostBack="True"></asp:TextBox>
                &nbsp;&nbsp;&nbsp;
                <asp:Label ID="lblVal2" runat="server" Text="/////"></asp:Label>
            </p>
            <p>
                Quantum 3 Length:&nbsp;&nbsp;
                <asp:TextBox ID="txtVal3" runat="server" TextMode="Range" min="1" Max="8" AutoPostBack="True" OnTextChanged="txtVal3_TextChanged1"></asp:TextBox>
                &nbsp;&nbsp;&nbsp;
                <asp:Label ID="lblVal3" runat="server" Text="/////"></asp:Label>
            </p>
            <p>
                <asp:Button ID="btnNext" runat="server" AutoPostBack="true" Height="24px" OnClick="btnNext_Click" style="margin-left: 0px" Text="Next" Width="150px" />
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <script type="text/javascript" __designer:mapid="129">

               function NextPage() {
                                    window.open('Execution.aspx', 'Execution');
                                 }
</script>
                <asp:Label ID="lblError" runat="server" ForeColor="Red" Text="Invalid input; Please ensure that Quantum 1 &lt;= Quantum 2 &lt;= Quantum 3" Visible="False"></asp:Label>
            </p>
</form>
 </body>

Мой код C # используется для управления полями и изменения их значений

 public partial class Quantums : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            txtVal1.Text = HttpContext.Current.Session["Q1"].ToString();
        }
        catch { }

        try
        {
            txtVal2.Text = HttpContext.Current.Session["Q2"].ToString();
        }
        catch { }

        try
        {
            txtVal3.Text = HttpContext.Current.Session["Q3"].ToString();
        }
        catch { }

        lblVal1.Text = txtVal1.Text;
        lblVal2.Text = txtVal2.Text;
        lblVal3.Text = txtVal3.Text;

        //UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger() { ControlID = "btnNext" });
    }


protected void txtVal1_TextChanged1(object sender, EventArgs e)
    {
        HttpContext.Current.Session["Q1"] = txtVal1.Text;
    }

А затемодин и тот же код для текстовых полей 2 и 3. Любые предложения о том, почему текстовые поля vaklue продолжают сбрасываться, а автоответчик включен на всех трех кнопках.

1 Ответ

0 голосов
/ 12 июня 2019

Я только что заметил, что вы пропали без вести if(Page.IsPostBack()) return;.Ваша проблема в том, что каждый раз, когда вы меняете текстовое поле, происходит событие «Page_Load», а затем соответствующий обработчик события (см. жизненный цикл страницы ).Итак, вы устанавливали текст для сессий, а затем устанавливали текст для сессий, фактически ничего не делая.

Вам на самом деле ничего не нужно для этой страницы в методе Page_load, по крайней мере сейчас.Попробуйте следующее:

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void txtVal1_TextChanged(object sender, EventArgs e)
    {
        Session["Q1"] = txtVal1.Text;
        lblVal1.Text = txtVal1.Text;
    }

    protected void txtVal2_TextChanged(object sender, EventArgs e)
    {
        Session["Q2"] = txtVal2.Text;
        lblVal2.Text = txtVal2.Text;
    }

    protected void txtVal3_TextChanged(object sender, EventArgs e)
    {
        Session["Q3"] = txtVal3.Text;
        lblVal3.Text = txtVal2.Text;
    }

Затем вы можете получить доступ к значениям пользовательского ввода, используя соответствующие значения сеанса.Например:

    protected void Submit(object sender, EventArgs e)
    {
        List<string> answers = new List<string>();
        answers.Add(Session["Q1"].ToString());
        answers.Add(Session["Q2"].ToString());
        answers.Add(Session["Q3"].ToString());

        // Do stuff with answers
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...