отключить href на странице содержимого с главной страницы в vb.net - PullRequest
2 голосов
/ 11 мая 2011

Так же, как говорится в названии. У меня есть код, который отключает все элементы управления, которые runat = сервер. Его следующим образом

Dim c As Control
For Each c In pc
   If c.HasControls Then DisableAllControls(c.Controls)

   If c.GetType.ToString.ToLower.IndexOf("webcontrols.dropdownlist") > -1 Then
      DirectCast(c, DropDownList).Enabled = False
   ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.textbox") > -1 Then
      DirectCast(c, TextBox).Enabled = False
   ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.radiobuttonlist") > -1 Then
      DirectCast(c, RadioButtonList).Enabled = False
   ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.radiobutton") > -1 Then
      DirectCast(c, RadioButton).Enabled = False
   ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.button") > -1 Then
      DirectCast(c, Button).Enabled = False
   End If
 Next

Но у меня есть пара ссылок, которые я тоже хочу отключить. Я знаю, что они не запускают сервер, так как я могу их поймать?

Ответы [ 3 ]

0 голосов
/ 11 мая 2011

Вы также можете добавить runat = "server" к элементам управления HTML. Без этого вы не сможете получить доступ к элементу управления на стороне сервера и не сможете его отключить.

0 голосов
/ 11 мая 2011

Этот код выглядит недействительным (If c.HasControls Then DisableAllControls(c.Controls) не имеет соответствия End If), но, возможно, VB.NET добавил встроенный синтаксис If так, что я даже не подозреваю.

В любом случае, что касается отключения всех runat="server" элементов управления, вы должны иметь возможность просто сделать это:

For Each c as WebControl In pc.OfType(Of WebControl)()
    ' Put your recursive call here as before 
    c.Enabled = False
Next

Теперь, чтобы «отключить» эти другие элементы, вы можете добавить к ним runat="server" (возможно, даже невозможно, если вы сгенерировалиHTML), или вы можете использовать JavaScript.Я собираюсь предположить, что при отключении вы имеете в виду скрытие в случае тегов <a>?

jQuery делает это легко, с примером сценария, который выглядит примерно так:

$(document).load(function() {
  $('a').hide();
});

или:

/* hides all a tags under an element with class="someClass" */
$(document).load(function() {
  $('.someClass a').hide(); 
});

Затем вы можете сделать так, чтобы ваш код отображал этот скрипт, используя что-то подобное на вашей странице:

Dim script as String = "" /* your javascript here */
Me.ClientScript.RegisterClientScriptBlock(Me.GetType(), "HideTagsScript", script)
0 голосов
/ 11 мая 2011

Вы можете добавить runat="server":

<a runat="server" href="..." ></a>

Это единственный способ сохранить элементы управления, используя код на стороне сервера.

...