マスターページのドロップダウンリストに選択したインデックスが保持されない
-
03-07-2019 - |
質問
さて、私のマスターページには多くのことに影響するサイズを制御するドロップダウンがあります。コンテンツページからドロップダウンインデックスにアクセスする必要があるため、このコードを使用してアクセスします。
public partial class MasterPage : System.Web.UI.MasterPage
{
public DropDownList MySize { get { return _ddlSize; } }
}
Ajaxを使用していますが、サイズを変更すると、マスターページのメニューが正常に変更されます。
ただし、更新されたメニューをクリックすると、選択したサイズが視覚的に表示されていても、コンテンツページのドロップダウンリストのゼロインデックスが使用されます。
int size = Convert.ToInt32(Master.MySize.SelectedItem.Text); //Uses 0 index :(
Sessionを使用したくないのですが、なぜこれが100%動作しないのかわかりません。誰にもアイデアはありますか?
解決
わかった!
ドロップダウンをパブリックな静的オブジェクトに設定します
public static DropDownList MySize;
その後、マスターページがロードされるたびに、ページインスタンスと等しくなるように設定します。
protected void Page_Load(object sender, EventArgs e)
{
MySize = _ddlSize;
}
DropDownListの呼び出しは、静的オブジェクトなので少し異なります。
MasterPage.MySize.SelectedItem.Text
ただし、マスターページから派生したすべてのコンテンツページで機能します。
他のヒント
マルチユーザーシナリオでこのソリューションを確認しましたか?値は静的であるため、異なるユーザーに反映されます
マスターページで設定されたビューステートは、ドロップダウンリストの値を保持するか、非表示のコントロールを使用して値を保持するようにします
所属していません StackOverflow