Свойство Auto Post back не работает с контейнером вкладок
Я применяю глобализацию на своем веб-портале системы управления отелем, и у меня возникла проблема. Моя проблема заключается в том, что у меня есть раскрывающийся список двух языков: английский и испанский, и я устанавливаю autopostback="true", поэтому из раскрывающегося списка я выбираю испанский и моя веб-страница успешно конвертирует английский язык в испанский, вызвав метод ниже
protected override void InitializeCulture()
{
if (Request.Form["ctl00$contentplaceholder1$language_drp"] != null)
{
UICulture = Request.Form["ctl00$contentplaceholder1$language_drp"];
}
base.InitializeCulture();
}
Так как я установил для свойства autopostback значение true, эта функция называется успешной. и у меня есть также элемент управления, с помощью которого я могу редактировать информацию об отеле на испанском или английском языке, и я использовал контейнер вкладок для всей информации об отелях. но когда я нажимаю на редактировать, моя страница не возвращает обратно в true, поэтому я не могу вызвать метод культуры iniliaze, и поэтому я не могу конвертировать язык моей страницы. Я применил свойство autopostback true в tabcontainer, но не получилось. в контейнере вкладок у меня есть вкладки панелей. вот мой код
<asp:TabContainer ID="TabContainerHotelDetails" runat="server" AutoPostBack="true"
Width="100%" OnLoad="TabContainerHotelDetails_Load">
<asp:TabPanel runat="server" HeaderText="General" ID="TabGeneral" >
<ContentTemplate>
<asp:Panel ID="PanelInfo" runat="server" Width="100%" GroupingText="<%$ Resources:Resource, LocalizedInformation %>">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="20%">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaHotelName" runat="server" Text="<%$ Resources:Resource, LocalizedHotelName %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaHotelStatus" runat="server" Text="<%$ Resources:Resource, LocalizedStatus %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaMemberShip" runat="server" Text="<%$ Resources:Resource, LocalizedMemberShipType %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaUserName" runat="server" Text="<%$ Resources:Resource, LocalizedUserName %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaEmail" runat="server" Text="<%$ Resources:Resource, LocalizedEmail %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaTotalPoint" runat="server" Text="<%$ Resources:Resource, LocalizedTotalPoint %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaRegistrationDate" runat="server" Text="<%$ Resources:Resource, LocalizedRegisteredDate %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaLastLogin" runat="server" Text="<%$ Resources:Resource, LocalizedLastLogin %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaEmailActivated" runat="server" Text="<%$ Resources:Resource, LocalizedEmailActivated %>"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="metaLockedOut" runat="server" Text="<%$ Resources:Resource, LocalizedLockedOut %>"></asp:Label>
</td>
</tr>
</table>
</td>
<td width="5%" style="border-right: 1px dotted black;">
</td>
<td>
<table border="0" cellpadding="0" cellspacing="0" style="padding-left: 10px;">
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblHotelName" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblStatus" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblMembershipType" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblUserName" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblEmail" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblTotalPoints" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblRegisteredDate" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:Label ID="lblLastLogin" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:CheckBox ID="chkEmailActivated" runat="server" OnCheckedChanged="chkEmailActivated_CheckedChanged"
AutoPostBack="True" />
</td>
</tr>
<tr>
<td style="padding-top: 10px; height: 30px;">
<asp:CheckBox ID="chkLockedOut" runat="server" OnCheckedChanged="chkLockedOut_CheckedChanged"
AutoPostBack="True" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:Panel>
Есть ли способ, которым я могу легко сделать это или альтернативы для этого, так что мой метод iniliaze culture вызывается после того, как я нажимаю на edit. Пожалуйста, помогите, так как я очень новичок в переполнении стека. На самом деле я не знаю, как правильно задавать вопросы.
2 ответа
Здесь я нашел ответ после двух дней моего поиска. Ответ очень простой:)
я установил ценность моего языка в UICulture
protected override void InitializeCulture()
{
if (Request.Form["ctl00$contentplaceholder1$language_drp"] != null)
{
UICulture = Request.Form["ctl00$contentplaceholder1$language_drp"];
}
if (Request.QueryString["HotelID"] != null)
{
this.UICulture = "es";
}
base.InitializeCulture();
}
и работает нормально:)
Вы можете использовать веб-метод для инициализации культуры. для этого вы должны изначально создать метод javascript, который будет вызываться при нажатии на вкладку редактирования, и из этого сценария вы можете вызывать веб-метод на уровне страницы для initializeculture. надеюсь, это поможет вам.