asp. net 새로 고침 방지 시 중복 제출
간단하게 새로 고침 할 때 화면 을 다시 불 러 오 면 window. location. href = "url" 을 통 해 쉽게 이 루어 질 수 있 지만 수 요 는 새로 고침 할 때 아무것도 하지 않 고 화면의 상 태 를 유지 하 라 는 것 이 므 로 복잡 해 집 니 다.
asp. net 에서 요청 이 재 요청 인지 새로 고침 단 추 를 통 해 재 요청 하 는 것 이 편리 하지 않 습 니 다. 이 효 과 를 실현 하기 위해 여러 가지 방법 을 시도 해 보 았 습 니 다. 다음 두 가지 예 를 들 어.
1.
private bool pageRefreshed = false; //
private bool refreshState = false; //ViewState
그리고 Page 의 LoadView State 와 SaveView State 방법 을 다시 씁 니 다.
protected override void LoadViewState(object savedState)
{
object[] states = (object[])savedState;
base.LoadViewState(states[0]);
refreshState = (bool)states[1];
if(Session["__PAGE_REFRESHED"] == null)
pageRefreshed = false;
else
pageRefreshed = refreshState != (bool)Session["__PAGE_REFRESHED"];
}
protected override object SaveViewState()
{
Session["__PAGE_REFRESHED"] = !refreshState;
object[] states = new object[2];
states[0] = base.SaveViewState();
states[1] = !refreshState;
return states;
}
private void Button1_Click(object sender, EventArgs e)
{
if (pageRefreshed )
{
label.Text="this is refreshed function";
}
else
{
label.Text="this is new request function";
}
}
이런 방법 은 비록 실현 할 수 있 지만, 어떤 청구 하에 서 는 적응 하지 못 한다.화면 에 텍스트 상자 와 단추 식 이 동시에 존재 한다 면 단추 의 autopostback = "True" 를 설정 할 때 텍스트 상자 의 값 을 수정 하고 단 추 를 직접 클릭 합 니 다 (텍스트 상자 에 초점 을 잃 지 않 았 을 때 단 추 를 직접 클릭 합 니 다). 이때 의 실행 순 서 는 textchanged → textchanged → buttonclick 입 니 다. 첫 번 째 textchanged 때 상 태 를 true 로 바 꾸 었 습 니 다.버튼 을 실행 할 수 없습니다.
2. codeproject 에서 다른 해결 방법 을 찾 았 습 니 다.http://www.codeproject.com/Articles/18841/Refresh-Module
이 방식 은 브 라 우 저의 리 셋 단 추 를 통 해 요청 한 것 인지 정확하게 판단 할 수 있 으 며 사용 하기 도 매우 간단 합 니 다!
1. dll 참조, 프로필 수정
프로필 에 modules 추가
<system.web>
<httpModules>
<add name="RefreshModule"
type="RefreshModule.Module, RefreshModule"/>
httpModules>
system.web>
PS: wbapplication 의 경우 system. webServer 의 modules 노드 에 modules 를 추가 해 야 합 니 다.
2. 새로 고침 시 행동 정의
[Refresh()]
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack && !RefereshHelper.IsPageRefreshed)
{
// do some work with the submitted date
}
else
{
// do some work when the page is loaded with the GET method
}
}
}
RefereshHelper.IsPageRefreshed 。
。
PS:codeproject ,
다른 방식 은 일일이 열거 하지 않 고 열거 한 두 번 째 방식 은 간단 하고 사용 하기 쉽다 고 할 수 있 으 며 모든 실현 은 이미 우 리 를 위해 포장 되 었 으 니 간단 한 호출 만 필요 하 다.
다음으로 전송:https://www.cnblogs.com/qiangwei/archive/2013/01/28/disabledRefreshButton.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.