none
サイトマスターから子コンテンツを識別する方法 RRS feed

  • 質問

  • ASP.NET C# (Framework4.6)でWEBアプリの開発しています。

    サイトマスターを使用して、3ページほど子コンテンツを作成してページを表示しています。

    サイトマスターからどの子コンテンツが表示されようとしているのか識別したいのですが、方法はございますでしょうか。

    2018年4月11日 15:18

すべての返信

  • 何を作っているかと(ASP.NET と言っても Web Forms, MVC, Web Pages, Web API といろいろあります)、開発環境(OS, IIS, Visual Studio のバージョン、web.config に設定されている targetFramework)を書いてください。

    > サイトマスターを使用して、3ページほど子コンテンツを作成してページを表示しています。
    > サイトマスターからどの子コンテンツが表示されようとしているのか識別したいのですが、
    > 方法はございますでしょうか。

    質問の意味が分かりません。

    「サイトマスター」というのはマスターページ .master のことですか? 「子コンテンツ」というのは、そのマスターページを使うページ .aspx のことですか? 違う場合は、質問者さんが言うそれらは何なのか書いてください。

    「サイトマスターからどの子コンテンツが表示されようとしているのか識別」というのも意味が分かりません。どういうことか具体例を挙げて書いてもらえませんか?

    今提供されている情報だけで答えるには、回答者は質問者さんの質問には書いてないことを想像して、想像をベースに答えるということになります。で、その想像が間違っていると、当然ですが、答えが的外れになって、回答者が費やした時間・努力が無駄になるだけではなく、質問者さんもタイムリーに的を得た回答が得られない(場合によっては混乱するだけ、スレッドにノイズを増やすだけ)という結果になりますので。

    それから、できれば局所的な質問だけでなく、全体的なシナリオを含めたやりたいことを書いてください。そうすると質問が冗長になるということもあるかもしれませんが、特に初学者の人は、簡単でいいので書いた方がよさそうです。

    全体的なやりたいことやストーリーのごく一部を切り出して質問すると、もしその質問が全体的なやりたいことを実現するのには見当違いだった場合、回答も当然やりたいことを実現するには的外れになってしまいます。そうすると、見当違いと的外れのやり取りが繰り返されるだけになって、なかなか解決にたどり着けません。時間の無駄でもありますし。

    局所的な質問の部分は実現が無理 or 他にもっと良い方法があるような場合、「それはできない or そのやり方は適切ではないけど、やりたいことはこうすれば実現できる」というような代案も出てくるかもしれません。


    • 編集済み SurferOnWww 2018年4月12日 1:48 誤記訂正
    2018年4月12日 1:43
  • 説明足らずで申し訳ございません。

    Web FormsでWebアプリを作成しています。

    windows server 2012 IISで動作させる予定です。

    Visual studio 2017を使用して開発しています。

    マスターページを作成して、マスターページを含むWebフォームを3ページほど作成しました。

    マスターページのC#コードに、ボタンやUIなどの初期化処理を書いています。

    どのマスターページを含むWebフォームが表示されようとしているか識別して、初期処理を変更したいと考えています。

    どのマスターページを含むWebフォームが表示されようとしているか、マスターページのC#で知る手段はございますでしょうか?

    ご存じでしたら、ご教授いただけませんでしょうか。

    よろしくお願いいたします。

    2018年4月13日 14:53
  • > どのマスターページを含むWebフォームが表示されようとしているか、マスターページのC#で知る手段はございますでしょうか?

    マスターページの Page_Init とか Page_Load でコンテンツの .aspx ページの名前(例えば default.aspx とか about.aspx など)が分かればよいということなら、マスターページでも HttpRequest.Url プロパティで現在の要求の URL に関する情報を格納する Uri オブジェクトを取得できますので、それから分かります。

    その先、質問者さんがやりたいことができるかどうかは分かりませんが・・・ 

    (だから、最初の私のレスで「できれば局所的な質問だけでなく、全体的なシナリオを含めたやりたいことを書いてください」と書いたのですが)

    2018年4月14日 1:11
  • ご回答ありがとうございました。

    やはりHttpRequestからURLを参照する方法しかないんでしょうか。

    マスターページを含むWebフォームには、ContentPlaceHolderIDとは別に、単なるID(例えばID="abcd”)をそれぞれのページで設定してます。

    マスターページからこれを取得して、どのマスターページを含むWebフォームか識別することを期待していましたが、できないようですね。

    やりたいことは記載しています。

    > どのマスターページを含むWebフォームが表示されようとしているか識別して、初期処理を変更したいと考えています。

    上記以上でもないし、以下でもありません。

    2018年4月14日 2:07
  • > やりたいことは記載しています。

    いえ、あなたはあなたの「やりたいこと」は書いてません。

    > どのマスターページを含むWebフォームが表示されようとしているか識別して、初期処理を変更したいと考えています。

    上記だけで あなたが後出しした、

    > マスターページを含むWebフォームには、ContentPlaceHolderIDとは別に、単なるID(例えばID="abcd”)をそれぞれのページで設定してます。

    > マスターページからこれを取得して、どのマスターページを含むWebフォームか識別する

    が分かる人がいるとしたら、その人はエスパーだと思いますよ。

    質問を書く際に参考になると思われる記事を紹介しておきます。一度目を通していただければ幸いです

    技術系メーリングリストで質問するときのパターン・ランゲージ
    http://www.hyuki.com/writing/techask.html

    質問するときのヒント
    https://teratail.com/help/question-tips

    後者の記事にある "人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです" というところが重要だと思います。

    2018年4月14日 2:36
  • やりたいことは、

    > どのマスターページを含むWebフォームが表示されようとしているか識別して、初期処理を変更したいと考えています。

    で合っています。

    > マスターページを含むWebフォームには、ContentPlaceHolderIDとは別に、単なるID(例えばID="abcd”)をそれぞれのページで設定してます。

    > マスターページからこれを取得して、どのマスターページを含むWebフォームか識別することを期待していましたが、できないようですね。

    これはやりたいことではありません。

    一番スマートそうな方法かなと思っていましたが、調べてもIDの取得方法が見つからなかったので、ASP.NETではそんなことよりも別のスマートな方法があるのかなと思って質問しました。

    マスターページからマスターページを含むWebフォームのIDが取れるぞ!って回答があるかなと期待はしましたが。

    あくまでやりたかったことは「どのマスターページを含むWebフォームが表示されようとしているか識別」です。

    どんな方法であれ、識別ができればよかったのです。

    2018年4月15日 8:59