1

既存のサイトでは、さまざまなページ (City1.aspx、City2.aspx、City3.aspx など) によって読み込まれるフォームから隠しフィールドに値を渡す必要がありますが、それらは iframe 内に読み込まれます。また、それらの非表示フィールド (「ソース」と呼びましょう) の少なくとも 1 つの値を、それをロードする都市ページに基づいて動的に変更する必要もあります。PHP と JavaScript/JQuery には精通していますが、C# でこれを行う方法がわかりません。

JavaScript を介してファイル名 (拡張子なし) を取得するチュートリアルを見つけました。フォームが iframe の場合でも都市を取得できると思いますが、サイトの規則を守り、可能であれば C# を使用したいと考えています。

コードのスニペットまたは可能な解決策へのリンクは大歓迎です。

4

2 に答える 2

2

aspx (コード ビハインド) に関連付けられた c# で入力の値を変更する場合は、属性 runat=server を入力に追加する必要があります。

あなたのaspxでこのコードを使用してください

<input id="test" type="hidden" runat="server"/>

そしてあなたのC#で

test.Value = 123; //your value is 123 for example
于 2012-06-26T15:09:46.137 に答える
1

免責事項、私は JQuery を知らないので、これを行う簡単な方法があるかもしれません。また、コードをテストしていません...

正確な ID がわかっている場合は、親ページから次のようなことができます (javascript ブロック内):

var frame = document.getElementById('myIFrame');
var ctrl = frame.document.getElementById('myControl');
ctrl.value = "New Value";

ページ内のコントロールの正確な ID がわからない場合は、CityX.aspxそれらの ID を検出する方法が必要になるかiframe、正しいコントロールを探すためにすべてのコントロールを調べる必要があります。(私がこれを言うのは、iframeページ内のコントロールが何らかの ASP.NET 構造に保持されている場合、それらはtxtMyCtrl(たとえば) 呼び出されず、おそらくct00_txtMyCtrl.

正確なコントロール名がわからない場合 (前述の ASP.NET 構造のため)、次のようにすることができます。

var frame = document.getElementById('myIFrame');
var ctrls = frame.document.getElementByTagName("INPUT");
for(var i=0;i<ctrls.length;i++){
  if(ctrls[i].getAttribute("type")=="hidden" && ctrls[i].id.indexOf("_myControl") != -1){
    ctrls[i].value = "New Value";
    break;
  }
}

または、ページを更新できる場合は、CityX.aspxページに次のものを含めることができCityX.aspxます。

function getCtrls(){
  return [document.getElementById("<%=hiddenCtrl.ClientID%>"),
          document.getElementById("<%=anotherHiddenCtrl.ClientID%>")];
}

...そして、あなたの親ページでは、次のようになります:

var frame = document.getElementById('myIFrame');
var ctrls = frame.document.getCtrls();
for(var i=0;i<ctrls.length;i++){
  ctrls[i].value = "New Value";
}

それらは一般的なテーマに関する単なるアイデアです

于 2012-06-26T15:43:15.790 に答える