0
我使用生成服務器端的JavaScript驗證郵政編碼,並在單擊LinkButton時注入。然後,我通過在頁面加載時調用服務器端函數來檢索返回值。Asp.Net ViewState與RegisterClientScriptBlock丟失
這很好用,但問題在於回傳後ViewState完全丟失。以下是代碼,從page_load事件開始,按鈕單擊事件,然後是從page_load事件調用的回調。
有沒有辦法我可以以某種方式保存ViewState,也許很容易在一個會話變量?或者是否有我可以使用的解決方法?
// In Page_Load
if (Request.Form["__EVENTTARGET"] == "CallFunction") {
GetValidateZipCodeScriptReturnValue(Boolean.Parse(Request.Form["__EVENTARGUMENT"].ToString()));
}
// OnClick for LinkButton
private bool ValidateZipCode(string zip) {
StringBuilder script = new StringBuilder();
script.Append("<script language='javascript' type='text/javascript'>");
script.Append(@"var regex = /^\d{5}$|^\d{5}-\d{4}$/;");
script.Append("__doPostBack('CallFunction', regex.test(" + zip + "));");
script.Append("</script>");
Type t = GetType();
if (!ClientScript.IsClientScriptBlockRegistered(t, "ValidateZipCodeScript")) {
ClientScript.RegisterClientScriptBlock(t, "ValidateZipCodeScript", script.ToString());
}
return false;
}
// Method called on PostBack to get the return value of the javascript
private void GetValidateZipCodeScriptReturnValue(bool valid) {
m_ZipCode = uxZip.Text;
if (valid) {
Response.Redirect(string.Format("~/checkout/overview.aspx?pc={0}&zc={1}",
ProductCode, ZipCode));
}
else {
Alert.Show("The entered zip code is invalid. Please ensure the zip code is a valid zip code.");
SetupPostBackViewState();
ScrollToZipCode();
}
}
等待。因此,您正在做一個回發的LinkButton的OnClick動態生成JavaScript,做另一個PostBack? – 2009-01-11 04:24:59