source

대답.새 창으로 리디렉션합니다.

manysource 2023. 4. 25. 22:35

대답.새 창으로 리디렉션합니다.

저는 ㅇㅇㅇㅇㅇㅇㅇㅇ를 하고 싶어요.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>");

고정 양식 트릭은 깔끔하지만 다음과 같습니다.

  1. 새 창에 로딩되는 코드에 액세스하지 못할 수 있습니다.

  2. 로딩하더라도 오류 없이 항상 로딩된다는 사실에 의존하게 됩니다.

  3. 또한 다른 페이지가 수정 양식을 로드하고 실행하기 전에 사용자가 다른 단추를 누르지 않는다는 사실에 의존하고 있습니다.

대신 이렇게 하는 것이 좋습니다.

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 입니다.