উত্তর:
আমি সবেমাত্র উত্তরটি পেয়েছি এবং এটি কাজ করে :)
আপনার সার্ভারের পাশের লিঙ্ক / বোতামে আপনাকে নিম্নলিখিতগুলি যুক্ত করতে হবে:
OnClientClick="aspnetForm.target ='_blank';"
আমার সম্পূর্ণ বোতামের কোডটি এমন দেখাচ্ছে:
<asp:LinkButton ID="myButton" runat="server" Text="Click Me!"
OnClick="myButton_Click"
OnClientClick="aspnetForm.target ='_blank';"/>
সার্ভারের দিকে অনক্লিক আমি একটি করি Response.Redirect("MyPage.aspx");
এবং পৃষ্ঠাটি একটি নতুন উইন্ডোতে খোলা হবে।
আপনার অন্য যে অংশটি যুক্ত করতে হবে তা হ'ল ফর্মটির লক্ষ্য স্থির করা অন্যথায় প্রতিটি লিঙ্ক একটি নতুন উইন্ডোতে খুলবে। এটি করতে আপনার পপআপ উইন্ডোর শিরোনামে নিম্নলিখিতটি যুক্ত করুন।
<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()">
OnClientClick="aspnetForm.target ='_blank';"
আমাকে ব্যবহার করতে হয়েছিলOnClientClick="document.getElementById('Form').target ='_blank';"
আপনি এটি এক্সটেনশন পদ্ধতি হিসাবে ব্যবহার করতে পারেন
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");
কারণ প্রতিক্রিয়া edএই পুনর্নির্দেশ সার্ভারে শুরু করা হয়েছে আপনি এটি ব্যবহার করে এটি করতে পারবেন না।
আপনি যদি সরাসরি প্রতিক্রিয়া প্রবাহে লিখতে পারেন তবে আপনি এর মতো কিছু চেষ্টা করতে পারেন:
response.write("<script>");
response.write("window.open('page.html','_blank')");
response.write("</script>");
ক্লিক ইভেন্ট হ্যান্ডলারের মাধ্যমে আপনার url তৈরি করুন:
string strUrl = "/some/url/path" + myvar;
তারপর:
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + strUrl + "','_blank')", true);
ফিক্সফর্ম ট্রিকটি ঝরঝরে, তবে:
নতুন উইন্ডোতে কী লোড হয় তার কোডটিতে আপনার অ্যাক্সেস নাও থাকতে পারে।
এমনকি যদি আপনি তা করেন তবে আপনি এটি নির্ভর করে যে এটি সর্বদা লোড হয়, ত্রুটিমুক্ত।
এবং আপনি এই সত্যের উপর নির্ভর করছেন যে অন্য পৃষ্ঠাটি ফিক্সফর্মটি লোড এবং চালানোর সুযোগ পাওয়ার আগে ব্যবহারকারী অন্য বোতামটি ক্লিক করবে না।
পরিবর্তে আমি এটি করার পরামর্শ দিচ্ছি:
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);
window.open('page.aspx','_blank');
এটি ব্যবহার করলেও এটি নতুন ট্যাবটির পরিবর্তে নেভিগেশন বারটিকে অক্ষম করে এবং এনএভি বোতামগুলি সহ একটি নতুন উইন্ডোতে এটি খুলবে।
পপআপ পদ্ধতিটি দর্শকদের একটি সুরক্ষিত প্রশ্ন দেবে ..
এখানে আমার সহজ সমাধান: এবং সর্বত্র কাজ করা।
<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/
আপনি যদি নিজের কোডটি পুনরায় গঠন করতে পারেন যাতে আপনাকে পোস্টব্যাকের প্রয়োজন না হয় তবে আপনি এই কোডটি বোতামের প্রি-রেন্ডার ইভেন্টে ব্যবহার করতে পারেন:
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" />
এবং কেবল রেসপন্সকে কল করুন ed পুনঃনির্দেশ ("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 সংস্করণ এখানে রয়েছে। দ্রষ্টব্য: কোনও হার্ডকোডযুক্ত ফর্মিড নয় (উপরে বর্ণিত এসপনেটফর্ম) এবং সরাসরি ফর্ম.আর্টরেক্ট রেফারেন্সও ব্যবহার করে না যা ফায়ারফক্স সমস্যার সম্মুখীন হতে পারে:
<asp:Button ID="btnSubmit" OnClientClick="openNewWin();" Text="Submit" OnClick="btn_OnClick" runat="server"/>
তারপরে আপনার জেএস ফাইলটিতে একই পৃষ্ঠায় উল্লেখ করা হয়েছে:
function openNewWin () {
$('form').attr('target','_blank');
setTimeout('resetFormTarget()', 500);
}
function resetFormTarget(){
$('form').attr('target','');
}
আমি লিংক বাটনের পরিবর্তে হাইপারলিঙ্ক ব্যবহার করেছি এবং এটি ঠিক কাজ করেছে, এটির টার্গেট সম্পত্তি রয়েছে তাই এটি আমার সমস্যার সমাধান করে। রেসপন্সের সাথে সমাধান ছিল W রাইট কিন্তু এটি আমার লেআউটটি জগাখিচুড়ি করছিল, এবং প্রতিটি রিফ্রেশ বা পিছনে স্ক্রিপ্টম্যানেজারের সাথে উইন্ডোটি আবার খোলা ছিল। সুতরাং এটিই আমি এটি সমাধান করেছি:
<asp:HyperLink CssClass="hlk11" ID="hlkLink" runat="server" Text='<%# Eval("LinkText") %>' Visible='<%# !(bool)Eval("IsDocument") %>' Target="_blank" NavigateUrl='<%# Eval("WebAddress") %>'></asp:HyperLink>
আমি যেমন এখানে করেছিলাম তেমন অ্যাজাক্স ব্যবহারের পিছনে আপনি এসপ নেট কোড থেকে নতুন উইন্ডো খুলতে পারেন http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/
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;"
নতুন ব্রাউজারে খোলার জন্য আমাকে অন্য কারও প্রতিক্রিয়া জানানো হয়েছে redডাইরেক্ট কোড।
আমি এই পদ্ধতির ব্যবহার করেছি, এর জন্য আপনাকে পপআপে কিছু করার দরকার নেই (যা আমি পিডিএফ ফাইলে পুনর্নির্দেশ করছিলাম বলে আমার অ্যাক্সেস ছিল না)। এটি ক্লাসও ব্যবহার করে।
$(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);
});
});
ব্যবহার করতে, কোনও উপাদানটিতে "নতুন উইন্ডো" শ্রেণি যুক্ত করুন। আপনার বডি টেগে কিছু যুক্ত করার দরকার নেই। এই ফাংশনটি নতুন উইন্ডোটি সেট আপ করে এবং একই ফাংশনে এটি স্থির করে।
আমি লিংক বাটনে লক্ষ্য = "_ ফাঁকা" রেখে এটি করেছি
<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)
এইচটিএমএল
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick = "SetTarget();" />
javascript:
function SetTarget() {
document.forms[0].target = "_blank";}
এবং কোডবিহাইন্ড:
Response.Redirect(URL);