обратные передачи asp.net не сработают - PullRequest
1 голос
/ 23 сентября 2011

Я сделал простой сайт ASP.net, и все отлично работает на моем компьютере. Но на компьютере моего коллеги никакие постбэки не запускаются, хотя он использует ту же ОС (Win 7) И тот же браузер, что и я (IE9).

У меня сейчас нет доступа к его компьютеру, что затрудняет его отладку. Кто-нибудь знает, что может предотвратить постбэки на одном компьютере, хотя они работают на другом с тем же браузером? (Я также попробовал это на третьем компьютере с другим браузером и ОС, и он тоже работал там)

// обновление: некоторый код

Следующий код является одной из страниц, где возникает проблема.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewList.aspx.cs" Inherits="QAList.NewList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Items</title>

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

    <link href="qalist.css" rel="stylesheet" type="text/css" />

    <script src="lib/jquery-1.4.3.min.js" type="text/javascript"></script>
    <script src="lib/jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script>
    <link rel="stylesheet" href="css/smoothness/jquery-ui-1.8.5.custom.css" type="text/css" media="screen" charset="utf-8" />

    <style type="text/css">

        input[disabled]
        {
            background-color:#888888;
        }

        .Filled 
        {
            width: 98%;
        }

        .Property
        {            margin-bottom: 0px;
        }

       .Date
        {
            /* this class is only used to indicate that the value is a DateTime value */
        }


        .PropertyTable td
        {
            border-bottom: 1px solid #D8D8D8;
            padding:1px;
            background-color:#F6F6F6;
        }

        .Suppler_style
        {
            color: #0000BB;
        }

    </style>

    <script type="text/javascript">

        $(function () {
            $(".Date").datepicker({ dateFormat: "yy/mm/dd" });
        });

    </script>

</head>
<body>

    <form id="form1" runat="server">



    <table style="width: 80%;" border="0" class="PropertyTable" cellspacing="0" cellpadding="0">
    <tr>
        <td style="width: 227px;">
            Project Number</td>
        <td>
            <asp:TextBox ID="ProjectNumber" runat="server" CssClass="Property" Width="200px"></asp:TextBox>
        &nbsp; <asp:Button ID="btApplyPnr" runat="server" Text="  apply  " 
                onclick="btApplyPnr_Click" />
        </td>
    </tr>
    <tr>
        <td>
            Contract No.</td>
        <td>
            <asp:DropDownList ID="ddContractNo" runat="server" AutoPostBack="True" 
                onselectedindexchanged="ContractNo_SelectedIndexChanged" 
                CssClass="Filled">
            </asp:DropDownList>
            <input type="hidden" class="Property" id="V_QA_PO_tp_listId" runat="server" />
            <input type="hidden" class="Property" id="V_QA_PO_tp_ID" runat="server" />
            <input type="hidden" class="Property" id="ContractNo" runat="server" />
        </td>
    </tr>
    <tr>
        <td>
            ITP No</td>
        <td>
            <asp:TextBox ID="ITPNo" runat="server" CssClass="Filled Property"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="Suppler_style">
            ITP Name</td>
        <td>
            <asp:TextBox ID="ITPName" runat="server" CssClass="Filled Property"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td class="Suppler_style">
            Status Delivery/Finish Date</td>
        <td>
            <asp:TextBox ID="StatusDeliveryFinishDate" runat="server" 
                CssClass="Filled Property Date"></asp:TextBox>
        </td>
    </tr>
    </table>


    </form>

</body>
</html>

И код C #:

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

namespace QAList
{
    public partial class NewList : System.Web.UI.Page
    {

        private string current_contract = "0";
        private string current_pnr;

        protected void Page_Load(object sender, EventArgs e)
        {
            current_contract = ddContractNo.SelectedValue;
        }

        protected void Page_PreRender(object sender, EventArgs e)
        {
            //load Contract Numbers
            ddContractNo.Items.Clear();
            ddContractNo.Items.Add(new ListItem("-", "0"));
            foreach (DataRow contract in DBAccess.Instance.getContractNumbers(current_pnr).Rows)
            {
                ddContractNo.Items.Add(new ListItem(contract["ProjectNumber"] + " - " + contract["ContractNo"] + " - " + contract["GoodsServicesSupplied"], contract["tp_listId"] + "_" + contract["tp_ID"]));
            }
            try
            {
                ddContractNo.SelectedValue = current_contract;
            }
            catch (ArgumentOutOfRangeException)
            {
                ddContractNo.SelectedValue = null;
                applyNewContractValue();
            }
        }

        protected void ContractNo_SelectedIndexChanged(object sender, EventArgs e)
        {
            applyNewContractValue();
        }

        private void applyNewContractValue()
        {
            current_contract = ddContractNo.SelectedValue;
            if (!String.IsNullOrEmpty(current_contract) && current_contract != "0")
            {
                Guid tp_listId = new Guid(current_contract.Split('_')[0]);
                int tp_ID = Convert.ToInt32(current_contract.Split('_')[1]);
                DataRow row = DBAccess.Instance.getContractInfos(tp_listId, tp_ID);
                if (row == null)
                    return;
                ITPName.Text = row.IsNull("GoodsServicesSupplied") ? "" : row["GoodsServicesSupplied"].ToString();
                if (!row.IsNull("PlannedDeliveryexworks"))
                {
                    DateTime tmp = (DateTime)row["PlannedDeliveryexworks"];
                    StatusDeliveryFinishDate.Text = tmp.Year + "/" + fillZeros(tmp.Month, 2) + "/" + fillZeros(tmp.Day, 2);
                }
            }
            else
            {
                ITPName.Text = "";
            }
        }

        private string fillZeros(int nr, int min_length)
        {
            string res = nr.ToString();
            while (res.Length < min_length)
                res = "0" + res;
            return res;
        }

        protected void btApplyPnr_Click(object sender, EventArgs e)
        {
            current_pnr = ProjectNumber.Text;
        }


    }
}

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Проверьте, не установлен ли в вашем коллеге какой-либо блокировщик сценариев, это может предотвратить обратную передачу, поскольку он управляется Javascript.

0 голосов
/ 14 ноября 2017

В случае, если это кому-то поможет:

У меня произошло нечто подобное, и оказалось, что это произошло из-за некоторых элементов проверки на странице.Они были для некоторых скрытых текстовых полей, которые на самом деле не были видны и не указали группу проверки.На одном из компьютеров ошибки были проигнорированы, и постбэк сработал, тогда как на втором компьютере постбэк не прошел из-за ошибок валидации.Поскольку текстовые поля в настоящее время не были видны, проблема была не сразу очевидна.

Как только я создал группы проверки, проблема исчезла.Я не знаю, почему поведение на этих двух компьютерах было разным, поскольку оба работают под управлением Chrome в Windows 10.

...