はじめての親子ハイキングに挑戦!! >>

大変お世話になっております。

現在別ウィンドウを開くのに
ClientScript.RegisterStartupScript(Me.GetType, "OpenNewWindow", "<script language=""javascript"">window.open('URLを指定', 'TARGET');</script>")
を使用しております。

ですが上記の場合だとjavascriptの為、ASP.Net で使用できる ~(チルダ)が使用できず、ルート表示ができません。

Response.Redirectで記述すると、ターゲットが指定できず、ウィンドウを上書きする形になってしまいます。

足して2で割れればいいのですが、javascriptで ~(チルダ)のようなルート指定ができる方法、もしくは、Response.Redirectでターゲットが指定できる方法など、もしあるようでしたら、お教えいただけますよう、何卒ご教授くださいませ。

上級者の方は、このジレンマをどのように克服されているのか是非ともお教えくださいませ。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Response.Redirect は、ブラウザに HTTP のステータスコード 302(だったはず)を返すものです。


このとき、遷移先のURLを指定することしかできません。
ブラウザ側もそれ以上のことはできないです。

ASP.NETとはいってもブラウザを使う以上、基本はHTTPおよびHTMLです。
そこでできる以上のことはできません。
自分が実装したコードはHTTPやHTMLだとどうなるのか、という観点から考えると、できること
できないことがはっきりしますし、なぜできないかという部分も理解できるかと思います。
    • good
    • 0
この回答へのお礼

onosさん 大変お世話になります。

HTTP、HTMLともに、まだまだ浅はかな知識しか持ち合わせておらず、以後、同時に勉強していきたいと思っております。

今回は大変勉強になりました。
ありがとうございました。

お礼日時:2012/11/12 19:21

window.openで、 Request.ApplicationPath + 飛び先ページ を指定する

    • good
    • 0

本質的な問題はなんでしょう。



自分の経験から判断すると、開発環境だとルートが「localhost:ポート/プロジェクト名/」とか
なのに、本番環境は「本番ドメイン名/」だったりすることが多く、この違いをうまく吸収したい
ということかな、と思うのですが。。。

もしそういうことなら、やりようはいろいろあると思うのですが、単純な方法としては
ルートを指定する文字列を設定ファイル内に記述しておいて、Windows.Openの中の
'URLを指定'のところは上記設定してある文字列+ウィンドウに表示したいファイル名
とかに変えてしまうことかな、と思います。
開発環境と本番環境用の設定ファイルをきちんときりわけて利用すればそれでいけるかと。

この回答への補足

onosさん いつもお答えいただき大変恐縮しております。

ご指摘どおり、開発環境と本番環境での違いの吸収をどういう形でやるということが一番の問題でした。
おっしゃるとおり、開発環境と本番環境で設定ファイルを切り分ける方法がありました。
ご指摘の柔軟性を以後忘れないようにしたいと思います。

しかし、やはり2つの方法の良いとこ取りはできないんでしょうかね;;
Response.Redirect にターゲットを指定できれば、一番良いんですが;;

補足日時:2012/11/12 17:52
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB.NETで、プログラム上から新しいウィンドウを開くをする方法

HyperLinkコントロールを使って
NvigationURL=移動先URL
target=blank
で、新しいウィンドウでページを表示はできるのですが、
プログラム上で、これと同じことをしたいんです。
どのような命令文でやればよいのでしょうか?
ボタンを押したときに、プログラムを走らせてから最後にジャンプしたいんです。

Aベストアンサー

お世話になります。

HyperLink Control というと
ASP.NET ですよね。

> ボタンを押したときに、プログラムを走らせてから最後にジャンプしたいんです。

Button クリックイベントのコードの一番最後で
VS2003 なら RegisterStartupScript
VS2005 なら Clientscript.RegisterStartupScript
で、
"window.open('http://www.google.com/', '_blank')"
というような文字列を
つけてやればよいかと思います。

[[ASP.NET]ページにJavaScriptを埋め込むには?]
http://www.atmarkit.co.jp/fdotnet/dotnettips/160regscript/regscript.html

[ClientScriptManager.RegisterStartupScript メソッド]
http://msdn2.microsoft.com/ja-JP/library/asz8zsxy.aspx

お世話になります。

HyperLink Control というと
ASP.NET ですよね。

> ボタンを押したときに、プログラムを走らせてから最後にジャンプしたいんです。

Button クリックイベントのコードの一番最後で
VS2003 なら RegisterStartupScript
VS2005 なら Clientscript.RegisterStartupScript
で、
"window.open('http://www.google.com/', '_blank')"
というような文字列を
つけてやればよいかと思います。

[[ASP.NET]ページにJavaScriptを埋め込むには?]
http://www.atmarkit.co.jp/fdotnet/d...続きを読む

QASP.NETでのメッセージ画面を出すには

はじめまして。
ASP.NET(C#)で、開発をしています。
例えば、内部である処理が終わった後に「完了!」みたいなメッセージ画面をポップアップさせたいと思っております。いろいろ調べてはいるんですが、方法がわかりません。JSを使わなければならないのかなとは思いますが、具体的な方法がわかりません。
よい方法がありましたら、教えていただけないでしょうか。よろしくお願いいたします。

Aベストアンサー

確認は取れていませんが、多分以下のHPの内容でいけると思いますが…。
参考に如何でしょうか。

・ASP.NETでメッセージボックス(OK・NO)の処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5952&forum=7&6

・Webアプリでメッセージボックスを使いたい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1644&forum=7&7

QASPで画面間のパラメタ受け渡し

こんばんは。ASP初心者です。
ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

Aベストアンサー

1. Cookieを使う
2. 画面遷移を postで行い、hidden項目に値をセットする (要JavaScript)

私は面倒なのでセッション変数使ってますが、必要なくなればセッションをクリアすれば良いだけだと思います。

Session.Contents("hoge") = Empty

QWebページ上のボタン等の位置を移動したい。

こんにちわ。
いまASP.NETのWebフォームにパネルを置いて,その上にボタンなどのオブジェクトを配置しようとしています。
ところがフォームに直接ボタンを配置するときは,
任意の位置に配置できるのですが,
パネルの上だと任意の位置に配置できません。
VBのようにプロパティでx/y座標を指定しようと思ったのですが,
それらしいプロパティが見当たりません。
どうすれば任意の位置に配置できるでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

#1 です。

WebForm で何もコントロールを選択していない状態か、新規の WebForm で [レイアウト]-[位置]-[自動配置オプション] を選択。
<オプション> ダイアログの左側 [HTML デザイナ]-[CSS 配置] が開いてる状態になりますので、右側の配置オプションで [ツールボックス、貼り付け、またはドラッグ・・・] にチェックを入れて「絶対配置」を選択して [OK] をクリック。
コレ以降フォームに貼り付けたコントロールは絶対配置になりますので好きな場所に移動できます。

って方法もありますね。

Qresponse.redirect <> で開くウィンドウのツールバーをなくしたい

ASPはとっても初心者です。
よろしくお願いします。

今、
test1.aspからtest2.aspを呼び出して
test2.asp内に以下の記述をして、<<URL>>のページを新たなウィンドウで開いています。
↓↓↓
response.redirect <<URL>>

この場合だと、新しく開くウィンドウはアドレスバーやツールバーが表示されてしまいます。
アドレスバーとツールバーを表示させないで新しいウィンドウを開く方法はありませんか??

つたない文章ですみませんが、どうぞよろしくお願いします。

Aベストアンサー

まずは、ASPとは何かと言う事を知られた方がいいかもしれませんね。

>>ASP(Active Server Page)はその名のとおり、アクティブにWebページを
>>作成します。つまり、Webサーバと連携して様々な処理を行い、その結果を
>>Webブラウザ に返すという働きをします。これが、ASPです。

ですので、質問者さんの言われる処理はどちらかと言えばサーバ側でなく、
クライアント側の処理となるので、ASPよりむしろJavaScriptとなるでしょう。

それと、ASPのResponse.RedirectはJavaScriptのlocation.hrefと同じです。
ですので、お望みの事を行う為にはwindowオブジェクトのopenメソッドを
使用してやるのが無難だと思いますよ。

方法、その他は他の方が回答しているのでJavaScriptの参考HPを書いておきます。

参考URL:http://www.usagi-js.com/

QjavascriptでASPにデータを渡す

javascript,ASPの初心者です。
現在親画面にあるデータを子画面にて使用したいと思っています。
親画面の、データをjavascriptのonclickを使用して関数に渡すところまでは出来ています。その関数内でwindow.open()をコールし子画面を呼び、Page_Load()内でデータを使用したいと思っているのですが、定義?の方法が分かりません。分かりづらい説明ですみませんが、よろしくお願いいたします。

Aベストアンサー

ぉぉぅ。。。自分と同じような境遇の人がww

自分も、JavaScript、ASPの勉強を始めたばかりの初心者っすww
初心者同士、よろしく~ ̄▽ ̄


んーと。。。
その関数を渡せればいいわけっすね。。。???




<Script language ="JavaScript">
function Go_child(send){
document.form.sendchild.value = send;
win_style = "";(ウインドウの構成要素(ツールバーの有無とか。
win_name = " ";(ウインドウの名前?
window.open("child.asp",win_name,win_style);
}
</script>
<body>
<%
ASPの構文~。

a = ~~~ ←aを子画面に。と過程。
%>
<form name ="form">

<input type ="button" name = "button1" onClick="Go_child(<% =a%>)">
<input type ="hidden" name ="sendchild" value ="">
</form>
</body>




<Script language ="JavaScript">
function getsend(){//JavaScriptで持ってくる場合。?
document.form2.text2.value = opener.document.form1.text1.value;
}
</script>
<body onLoad="getsend()">
<%'ASPで持ってくる場合。?
Dim bbb
bbb = Request.Form("sendchild")
%>
<form name ="form2">
<input type ="text" name ="text2">
<input type ="text" name ="text3" value ="<% =bbb%>">

</form>
</body>


JavaScriptでもASPでも受け取れるかな?
動作は確認してませんけど。。。
こんな感じでいいのかな?と思います(汗

ぉぉぅ。。。自分と同じような境遇の人がww

自分も、JavaScript、ASPの勉強を始めたばかりの初心者っすww
初心者同士、よろしく~ ̄▽ ̄


んーと。。。
その関数を渡せればいいわけっすね。。。???




<Script language ="JavaScript">
function Go_child(send){
document.form.sendchild.value = send;
win_style = "";(ウインドウの構成要素(ツールバーの有無とか。
win_name = " ";(ウインドウの名前?
window.open("child.asp",win_name,win_style);
}
</script>
<body>
...続きを読む

Q画面のリフレッシュを意図的に行いたい

Metaタグを使用せずに画面リフレッシュをしたくって、
以下のプログラムを作成したのですが、
上手く動作しません。

やりたいこととしては、以下の3つです。
 ・METAタグの使用はしたくない(都合上使用できない)。
 ・必ずMain_LOAD()をコールした後にリフレッシュさせたい。
 ・★処理を行った後にrefreshTest.aspをリフレッシュしたい。


---ASPファイル refreshTest.asp ここから--------
<SCRIPT language="JavaScript">
<!--
function refresh()
{
location.href = "rereload.html";
setTimeout('refresh()', 3000);
}
// -->
</SCRIPT>
<%
Sub Main_LOAD()
On Error Resume Next
%>

5秒後に再読み込みします
~ここに色んな処理を記述したい~
<%
End Sub
%>

<SCRIPT language="JavaScript">
<!--
//★処理が終わった時点で、↓を行う
refresh();
// -->
</SCRIPT>
---ASPファイル refreshTest.asp ここまで--------

長くなってすみませんが、宜しくお願い致します。

Metaタグを使用せずに画面リフレッシュをしたくって、
以下のプログラムを作成したのですが、
上手く動作しません。

やりたいこととしては、以下の3つです。
 ・METAタグの使用はしたくない(都合上使用できない)。
 ・必ずMain_LOAD()をコールした後にリフレッシュさせたい。
 ・★処理を行った後にrefreshTest.aspをリフレッシュしたい。


---ASPファイル refreshTest.asp ここから--------
<SCRIPT language="JavaScript">
<!--
function refresh()
{
location.href = "rereload.html";...続きを読む

Aベストアンサー

失礼します。

>JavaScript→クライアントスクリプトは理解しています。
残念ながら理解されていればこの質問にはならないと思います。
setTimeoutで呼ばれるプロシージャで再読み込みするのに
>必ずMain_LOAD()をコールした後にリフレッシュさせたい。
といっても、Main_LOADはサーバサイドなので
この考え方自体が不可能でしょう。
プロシージャ抜きでサーバサイドの先頭から記述すれば
リフレッシュ時の最初で動作します。

Q登録後、呼び出し元ページに戻るには

こんにちは。
ASP.NET2.0を使っています
データベースを閲覧したり修正したりするページを作成しています。

閲覧画面AとBがあり、どちらのページからも修正画面Cに行くことができます。
画面A→画面C
画面B→画面C
ここで修正画面Cでデータを修正後、呼び出されたページに戻りたいのですが、呼び出されたページを取得する方法に困っています
修正後の画面に戻りたいので、javascriptのhistory.back()は使えませんし、Request.UrlReferrerは修正時にポストバックされるからか修正画面Cのアドレスを示してしまっています。

なにか方法はないものでしょうか?よろしくお願いします。

Aベストアンサー

ページの遷移をどのように行っていますか?

ボタンのクリックイベントで Server.Transferで遷移しているならPreviousPageで取得できます

画面Cのメンバーに
dim myPreVious as Page
を追加

画面Cの Page_Lodeイベントで
if IsPostback = FALSE then
  if PreviousPage isnot nothing then
    Session("Previous") = PreviousPage
  end if
Else
  myPrevious = Seccion("Previous")
End if

画面Cの呼び出し元へ戻る場合
if myPrevious isnot Nothing then
  Session("Previous") = Nothing
  Response.Redirect( myPrevious.AppRelativeVirtualPath)
end if
といった具合いで ・・・

QGridViewにバインドせずにデータを表示する方法

環境:VS2008&VB.NET&ASP
GridViewに手動でテーブルからデータを読みデータバインドせず
DBの値を表示する方法を考えていますがうまくいかず困っています。
(データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。)
初心者のため見当違いなことをしているかもしれませんが
それも含めまして質問させていただきます。

質問1
そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。

質問2
以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。
手順に不適格な箇所があるのでしょうか。

strSql = "SELECT * FROM Data_Table"
Using connection As New SqlClient.SqlConnection(cnStr)
Dim command As New SqlClient.SqlCommand(strSql, connection)
connection.Open()
Dim dr As SqlClient.SqlDataReader = command.ExecuteReader
While (dr.Read = True)
'データあり
str1 = dr("data1")
str2 = dr("data2")
str3 = dr("data3")
End If
connection.Close()
Dim item1 As DataGridItem
item1 = New DataGridItem(-1, -1, ListItemType.Item)
Dim cell0 As TableCell = New TableCell
item1.Cells.Add(cell0)
Dim cell1 As TableCell = New TableCell
item1.Cells.Add(cell1)
Dim cell2 As TableCell = New TableCell
item1.Cells.Add(cell2)
Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal)
row1.Cells.Add(cell0)
row1.Cells.Add(cell1)
row1.Cells.Add(cell2)
GridView1.Controls(0).Controls.Add(row1)
End While
End Using

エラーの内容
System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。
Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index"

お力添えをよろしくお願い致します。

環境:VS2008&VB.NET&ASP
GridViewに手動でテーブルからデータを読みデータバインドせず
DBの値を表示する方法を考えていますがうまくいかず困っています。
(データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。)
初心者のため見当違いなことをしているかもしれませんが
それも含めまして質問させていただきます。

質問1
そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。

質問2
以下のコードで試しまし...続きを読む

Aベストアンサー

GridViewのRowsコレクションに Addメソッド無いため
コードでGridViewの行の追加が不可能なように思います

DromDownListのItemsなどなら Addメソッドもあるので
バインドしないでも項目の追加が可能だと思われます

SQLServerなら SQLDataSource経由でバインドした方が扱いやすいかもしれませんよ
DataSource経由なら DataSetやDataAdapterなどもウィザードで生成されますし
Tableについても型指定されたDataTableの派生クラスが生成されます

VBに付属のMSDNなどで GridViewのページの中のリンクを参照してみてください

Qasp.net メッセージボックス表示後の判定

削除ボタン押下時の処理でメッセージダイアログを表示しました。
この後、ダイアログのOKボタンを押された時の処理をコーディングしたいのですが、
どうすれば「OKボタン」or「キャンセル」どちらが押されたか判定できるのですか?
お願いします。

Protected Sub BtnDel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnDel.Click
’ダイアログ表示
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "msgbox", "confirm('" & "削除してもよいですか?" & "');", True)
’OKボタンが押された時削除処理を行う
<ここが不明>
End Sub

Aベストアンサー

http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review09/asp2review09_01.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング