대답.새 창으로 리디렉션합니다.
저는 ㅇㅇㅇㅇㅇㅇㅇㅇ를 하고 싶어요.Response.Redirect("MyPage.aspx")
이겁니다.JavaScript 등록 스크립트 메서드입니다.떻게게게게했했???????????
방금 답을 찾았는데 효과가 있습니다. :)
서버 측 연결/버튼에 다음을 추가해야 합니다.
OnClientClick="aspnetForm.target ='_blank';"
전체 버튼 코드는 다음과 같습니다.
<asp:LinkButton ID="myButton" runat="server" Text="Click Me!"
OnClick="myButton_Click"
OnClientClick="aspnetForm.target ='_blank';"/>
서버 측에서 OnClick OnClick을 수행합니다.Response.Redirect("MyPage.aspx");
이겁니다.
다른 부분은 양식의 대상을 수정해야 합니다. 그렇지 않으면 모든 링크가 새 창에서 열립니다.이렇게 하려면 POPUP 창의 헤더에 다음을 추가합니다.
<script type="text/javascript">
function fixform() {
if (opener.document.getElementById("aspnetForm").target != "_blank") return;
opener.document.getElementById("aspnetForm").target = "";
opener.document.getElementById("aspnetForm").action = opener.location.href;
}
</script>
그리고.
<body onload="fixform()">
확장 방법으로 사용할 수 있습니다.
public static class ResponseHelper
{
public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures)
{
if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures))
{
response.Redirect(url);
}
else
{
Page page = (Page)HttpContext.Current.Handler;
if (page == null)
{
throw new InvalidOperationException("Cannot redirect to new window outside Page context.");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures))
{
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
}
}
}
이를 통해 실제 응답 개체를 적절히 재정의할 수 있습니다.
Response.Redirect(redirectURL, "_blank", "menubar=0,scrollbars=1,width=780,height=900,top=10");
클릭 이벤트 핸들러를 통해 URL을 구성합니다.
string strUrl = "/some/url/path" + myvar;
그러면 다음과 같이 됩니다.
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + strUrl + "','_blank')", true);
반응 때문입니다.서버에서 리디렉션이 시작되었습니다. 리디렉션을 사용하여 리디렉션을 수행할 수 없습니다.
응답 스트림에 직접 쓸 수 있는 경우 다음과 같은 작업을 시도할 수 있습니다.
response.write("<script>");
response.write("window.open('page.html','_blank')");
response.write("</script>");
고정 양식 트릭은 깔끔하지만 다음과 같습니다.
새 창에 로딩되는 코드에 액세스하지 못할 수 있습니다.
로딩하더라도 오류 없이 항상 로딩된다는 사실에 의존하게 됩니다.
또한 다른 페이지가 수정 양식을 로드하고 실행하기 전에 사용자가 다른 단추를 누르지 않는다는 사실에 의존하고 있습니다.
대신 이렇게 하는 것이 좋습니다.
OnClientClick="aspnetForm.target ='_blank';setTimeout('fixform()', 500);"
같은 페이지에 다음과 같이 수정 양식을 설정합니다.
function fixform() {
document.getElementById("aspnetForm").target = '';
}
이렇게 뒤에 있는 코드를 사용할 수도 있습니다.
ClientScript.RegisterStartupScript(this.Page.GetType(), "",
"window.open('page.aspx','Graph','height=400,width=500');", true);
응답에서는 이 작업을 수행할 수 없습니다.서버 측에서 발생하므로 리디렉션하고 브라우저에 해당 작업을 수행하도록 지시할 수 없습니다.첫 번째 창에는 무엇이 남습니까?빈 페이지요?
팝업 방법은 방문자에게 보안 질문을 제공합니다.
여기 저의 간단한 해결책이 있습니다. 그리고 모든 곳에서 일합니다.
<script type="text/javascript">
function targetMeBlank() {
document.forms[0].target = "_blank";
}
</script>
<asp:linkbutton runat="server" ID="lnkbtn1" Text="target me to blank dude" OnClick="lnkbtn1_Click" OnClientClick="targetMeBlank();"/>
<asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry"
OnClick="btnNewEntry_Click" OnClientClick="aspnetForm.target ='_blank';"/>
protected void btnNewEntry_Click(object sender, EventArgs e)
{
Response.Redirect("New.aspx");
}
출처: http://dotnetchris.wordpress.com/2008/11/04/c-aspnet-responseredirect-open-into-new-window/입니다.
포스트백할 필요가 없도록 코드를 재구성할 수 있는 경우, 버튼의 PreRender 이벤트에서 다음 코드를 사용할 수 있습니다.
protected void MyButton_OnPreRender(object sender, EventArgs e)
{
string URL = "~/MyPage.aspx";
URL = Page.ResolveClientUrl(URL);
MyButton.OnClientClick = "window.open('" + URL + "'); return false;";
}
또한 다음 코드를 사용하여 새 탭에서 새 페이지를 열 수 있습니다.
<asp:Button ID="Button1" runat="server" Text="Go"
OnClientClick="window.open('yourPage.aspx');return false;"
onclick="Button3_Click" />
Response에 전화하세요.behind 버튼 이벤트를 리디렉션("yourPage.aspx")합니다.
난 항상 이 코드를 사용해요...이 코드를 사용합니다.
String clientScriptName = "ButtonClickScript";
Type clientScriptType = this.GetType ();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager clientScript = Page.ClientScript;
// Check to see if the client script is already registered.
if (!clientScript.IsClientScriptBlockRegistered (clientScriptType, clientScriptName))
{
StringBuilder sb = new StringBuilder ();
sb.Append ("<script type='text/javascript'>");
sb.Append ("window.open(' " + url + "')"); //URL = where you want to redirect.
sb.Append ("</script>");
clientScript.RegisterClientScriptBlock (clientScriptType, clientScriptName, sb.ToString ());
}
다음은 위의 @takrl 및 @tom의 답변을 기반으로 한 jQuery 버전입니다.참고: 하드코드된 formid(위의 aspnetForm)가 없으며 Firefox에서 문제가 될 수 있는 direct form.target 참조도 사용하지 않습니다.
<asp:Button ID="btnSubmit" OnClientClick="openNewWin();" Text="Submit" OnClick="btn_OnClick" runat="server"/>
그런 다음 같은 페이지에서 참조하는 js 파일에서 다음을 수행합니다.
function openNewWin () {
$('form').attr('target','_blank');
setTimeout('resetFormTarget()', 500);
}
function resetFormTarget(){
$('form').attr('target','');
}
LinkButton 대신 하이퍼링크를 사용했는데 잘 작동했고, Target 속성을 가지고 있어서 문제가 해결되었습니다.Response에는 해결책이 있었습니다.쓰기는 하지만, 제 레이아웃을 엉망으로 만들고, ScriptManager가 있는 레이아웃은 새로 고치거나 다시 열 때마다 다시 열었습니다.그래서 이렇게 해결했습니다.
<asp:HyperLink CssClass="hlk11" ID="hlkLink" runat="server" Text='<%# Eval("LinkText") %>' Visible='<%# !(bool)Eval("IsDocument") %>' Target="_blank" NavigateUrl='<%# Eval("WebAddress") %>'></asp:HyperLink>
페이지를 사용할 수 있습니다.페이지 로드 시 Javascript가 실행되도록 RegisterStartupScript를 등록합니다.
여기서처럼 http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/ 코드 뒤에 있는 asp.net에서 Ajax를 사용하여 새 창을 열 수 있습니다.
protected void Page_Load(object sender, EventArgs e)
{
Calendar1.SelectionChanged += CalendarSelectionChanged;
}
private void CalendarSelectionChanged(object sender, EventArgs e)
{
DateTime selectedDate = ((Calendar) sender).SelectedDate;
string url = "HistoryRates.aspx?date="
+ HttpUtility.UrlEncode(selectedDate.ToShortDateString());
ScriptManager.RegisterClientScriptBlock(this, GetType(),
"rates" + selectedDate, "openWindow('" + url + "');", true);
}
이전 예제는 모두 효과가 없었기 때문에 솔루션을 게시하기로 했습니다.버튼 클릭 이벤트에서 뒤에 있는 코드는 다음과 같습니다.
Dim URL As String = "http://www.google/?Search=" + txtExample.Text.ToString
URL = Page.ResolveClientUrl(URL)
btnSearch.OnClientClick = "window.open('" + URL + "'); return false;"
새 브라우저에서 열기 위해 다른 사용자의 응답.리다이렉트 코드를 수정해야 했습니다.
이 방법을 사용했으므로 팝업에서 아무것도 수행할 필요가 없습니다(PDF 파일로 리디렉션 중이었기 때문에 액세스할 수 없었습니다).수업도 이용합니다.
$(function () {
//--- setup click event for elements that use a response.redirect in code behind but should open in a new window
$(".new-window").on("click", function () {
//--- change the form's target
$("#aspnetForm").prop("target", "_blank");
//--- change the target back after the window has opened
setTimeout(function () {
$("#aspnetForm").prop("target", "");
}, 1);
});
});
사용하려면 "new-window" 클래스를 요소에 추가합니다.본문 태그에 아무것도 추가할 필요가 없습니다.이 기능은 새 창을 설정하고 동일한 기능으로 수정합니다.
링크 버튼에 target="_blank"를 입력하여 이 작업을 수행했습니다.
<asp:LinkButton ID="btn" runat="server" CausesValidation="false" Text="Print" Visible="false" target="_blank" />
그런 다음 코드뒤 페이지로드에서 href 속성을 설정합니다.
btn.Attributes("href") = String.Format(ResolveUrl("~/") + "test/TestForm.aspx?formId={0}", formId)
HTML을 사용합니다.
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick = "SetTarget();" />
Javascript는 다음과 같습니다.
function SetTarget() {
document.forms[0].target = "_blank";}
코드 뒤에 있습니다.
Response.Redirect(URL);
언급URL : https://stackoverflow.com/questions/104601/response-redirect-to-new-window 입니다.
'source' 카테고리의 다른 글
zsh를 종료하지만 실행 중인 작업을 열어두시겠습니까? (0) | 2023.04.25 |
---|---|
Git에서 커밋을 푸시할 때 'src refspec master does match any' 메시지가 표시됩니다. (0) | 2023.04.25 |
pywin32에서 숫자 COM 오류 코드를 디코딩하는 방법이 있습니까? (0) | 2023.04.20 |
x:Key가 없는 글로벌 스타일을 재정의하거나 모든 유형 대상 컨트롤에 명명된 스타일을 적용하는 방법 (0) | 2023.04.20 |
Swift에서 Timer(기존 NSTimer)를 사용하려면 어떻게 해야 하나요? (0) | 2023.04.20 |