[英]On Button Click Does Not Fire Up The PostBackUrl Once
这似乎很简单,但持续了几个小时就卡住了。 我有一个搜索按钮,可以启动PostBackUrl。 问题是它仅在我第二次单击搜索按钮时才会触发。 这是我做的:
Default.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = "View Cities - CcmApp";
if (!IsPostBack)
{
BindGridView(0);
BindPager(0);
GetCountries();
}
}
protected void SearchButton_Click(object sender, EventArgs e)
{
City aCity = new City();
aCity.CityName = nameTextBox.Text;
if (nameTextBox.Text.Length == 0 && radioCityName.Checked == true)
{
labelMsg.Visible = true;
labelMsg.Text = "No search term given";
}
else
{
SearchButton.PostBackUrl = GetDefaultUrl();
}
BindGridView(0);
BindPager(0);
}
public string GetDefaultUrl()
{
return "SearchCity.aspx?SearchTerm=" + nameTextBox.Text;
}
Default.aspx:
<asp:LinkButton ID="SearchButton" runat="server" Text="Search" ValidationGroup="vdGroup"
CssClass="btn btn-primary" OnClick="SearchButton_Click"></asp:LinkButton>
我不确定是什么原因导致它第二次单击以获取URL。 有什么办法克服它吗?
注意:我希望在url中获得以下输出-http:// localhost:1234 / UI / SearchCity.aspx?SearchTerm = a 。 但仅在第二次单击按钮时有效。 当我第一次单击时,会显示以下内容-http:// localhost:1234 / UI / SearchCity.aspx
按钮上的PostBackUrl
网址仅在第一个PostBack之后设置。 例如,如果您要在Page_Load
进行设置,则会看到它可以在第一个PostBack上运行。
如果仅当nameTextBox
有内容时才希望在URL中显示?SearchTerm=
,则可以使用Response.Redirect
或接受?SearchTerm=
没有数据。
最好还是在客户端检查nameTextBox
是否包含文本,并防止使用验证器单击按钮。
<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="/Default.aspx?SearchTerm=" ValidationGroup="mySearch">Search</asp:LinkButton>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="nameTextBox" ClientValidationFunction="checkLength" ValidateEmptyText="true" ErrorMessage="Min. 3 characters required" ValidationGroup="mySearch"></asp:CustomValidator>
<script type="text/javascript">
function checkLength(oSrc, args) {
var v = document.getElementById("<%=nameTextBox.ClientID %>").value;
if (v.length < 3) {
args.IsValid = false;
} else {
$("#<%=LinkButton1.ClientID %>").attr("onclick", $("#<%=LinkButton1.ClientID %>").attr("onclick").replace("?SearchTerm=", "?SearchTerm=" + v));
args.IsValid = true;
}
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.