2009-07-15 3 views
1

Я пытаюсь создать модуль, связанный с процессом веб-хостинга.Проблема с литералами и ViewState

На первом этапе должно быть текстовое поле с кнопкой «Добавить». Эта кнопка проверяет наличие домена и добавляет его в список.

Цель состоит в том, чтобы в основном отобразить список проверенных доменов и дать правильное действие в качестве радиобокс (зарегистрируйтесь, если он бесплатный, переведите иначе или укажите домен напрямую).

Так что в основном я проверяю наличие, а затем добавляю литеральный контроль в местозаполнитель.

Проблема с этим является представлением (когда я ступаю вперед и назад, я теряю выбор, который я сделал с доменами).

HTML-:

(...) 
     <asp:MultiView ID="mvFlow" runat="server" ActiveViewIndex="0"> 
      <asp:View ID="vDomain" runat="server" onactivate="vDomain_Activate"> 

       <asp:TextBox ID="txtDomain" runat="server" style="margin-bottom: 0px" 
        Width="254px"></asp:TextBox> 
        &nbsp;<asp:Button ID="domainAdd" runat="server" onclick="domainAdd_Click" 
        style="height: 26px" Text="Ajouter" /> 
       &nbsp;<br /> 
       <br /> 
       <asp:PlaceHolder ID="phDomainResults" runat="server"></asp:PlaceHolder> 
       <br /> 
       <br /> 
       <asp:LinkButton ID="lbDomainSkip" runat="server" onclick="lbDomainSkip_Click">Prochaine 
       étape »</asp:LinkButton> 

      </asp:View> 
(...) 

за ним в основном что-то вроде этого:

lt.Text =

    "<dl>" + 
         "<dt><strong>" + txtDomain.Text + "</strong> <span style='color:green;'>Le domaine est disponible</span></dt>" + 
         "<dd><input type='radio' name='" + txtDomain.Text.Replace('.', '_') + "_action' value='register' /> Register</dd>" + 
         "<dd><input type='radio' name='" + txtDomain.Text.Replace('.', '_') + "_action' value='transfert' disabled='disabled' /> Transfert</dd>" + 
         "<dd><input type='radio' name='" + txtDomain.Text.Replace('.', '_') + "_action' value='point' /> Point</dd>" + 
        "</dl>"; 

Там должно быть возможным, чтобы сделать вещи более логично и легко?

После предложение, которое я сделал это:

LiteralControl lt = new LiteralControl(); 
RadioButtonList rl = new RadioButtonList(); 

lt.Text = "<strong>" + txtDomain.Text + "</strong> <span style='color:green;'>Le domaine est disponible</span>"; 
rl.Items.Add(new ListItem { Enabled = true, Selected = true, Text = "Enregistrement", Value = "register" }); 
rl.Items.Add(new ListItem { Enabled = false, Selected = false, Text = "Transfert", Value = "transfert" }); 
rl.Items.Add(new ListItem { Enabled = true, Selected = false, Text = "Pointer moi même", Value = "point" }); 
//phDomainResults is a PlaceHolder in the page 
phDomainResults.Controls.Add(lt); 
phDomainResults.Controls.Add(rl); 

Не похоже, чтобы работать больше ...

ответ

0

Если необходимо использовать состояние представления, то вы правильно, вы не можете использовать литерал. (Или более конкретно вы могли бы, но это было бы довольно громоздким.

Вы должны, вероятно, генерировать жерех RadioButtonList элемент на лету и добавить, что вашему владельцу места. Ваша страница будет иметь возможность вспомнить RadioButtonList в ViewState.

+0

Пробовал, кажется, не сохраняет сам список. – Erick

0

Я бы сохранил соответствующую информацию в коллекции ViewState в вашем коде позади и на каждой странице загружал очистить значения владельца места и повторно отобразить и добавить литералы так же, как и вы сейчас. Таким образом, вам не нужно беспокоиться с тем, что ASP.Net будет и не будет экономить.

1

ASP.NET сохраняет состояние представления просто отлично: оно сохраняет содержимое буквального текста, как и должно. , содержимое литерала - это просто разметка (<dl> с переключателями), а не то, что пользователь мог сделать с этими кнопками.

Поскольку вы динамически добавляете переключатели в HTML, страница ASP.NET не «знает» о них.

Вместо того, чтобы выплескивать переключатели в элементе управления Literal, вы можете попробовать использовать RadioButtonList вместо этого.

+0

Кажется, что не работает, когда я возвращаюсь, RadioButtonList исчез. – Erick

Смежные вопросы