Peter Leow
Запустите страницу в вашем браузере, щелкните правой кнопкой мыши и просмотрите источник страницы, можете ли вы найти элемент управления FileUpload1?
1. Поскольку вы указали Visible= "false" для элемента управления FileUpload, он вообще никогда не будет отображаться на вашей HTML-странице, поэтому вы никогда не сможете получить к нему доступ через клиентский скрипт. Если вы хотите скрыть его при загрузке страницы и иметь возможность переключать его с помощью скрипта, не используйте свойство Visible="false", вместо этого вы должны сделать это на стороне клиента, либо установив CSS-свойство display в none, либо используя JavaScript, чтобы скрыть его.
var control = document.getElementById("FileUpload1");
control.style.visibility = "hidden"; // to hide
// or
control.style.display = "none"; // to hide
// to show
control.style.display = "";
2. установив его сразу после 1, Запустите его и снова просмотрите исходный код страницы, можете ли вы найти id= "FileUpload1", может быть, нет, вместо этого вы можете увидеть что-то похожее
id="MainContent_FileUpload1"
Да, имя может быть префиксировано какой-то другой строкой, чтобы сделать его уникальным, чтобы получить фактический идентификатор, вы должны использовать:
var control = document.getElementById("<%= FileUpload1.ClientID %>");
3. Наконец, все ваши элементы управления будут находиться внутри формы, и поведение по умолчанию любой формы отправки заключается в отправке данных на сервер. Ваш JavaScript-код будет переключать элемент управления при каждом нажатии кнопки, но он всегда будет обновляться до скрытого состояния по умолчанию в результате отправки формы. Решение состоит в том, чтобы отменить этот багавиор по умолчанию. Решение? Установите его так, чтобы он возвращал false в вашей функции JavaScript, и добавьте возврат к атрибуту onClientClick.
Чтобы завершить его, готовый код будет выглядеть следующим образом:
<div>
<asp:Button ID="ChangePic" runat="server" Text="Change Pic" onClientClick="return toggleVisibility()" />
<asp:FileUpload ID="FileUpload1" runat="server" />
</div>
<script>
var control = document.getElementById("<%= FileUpload1.ClientID %>");
control.style.visibility = "hidden";
function toggleVisibility()
{
if (control.style.visibility == "visible")
control.style.visibility = "hidden";
else
control.style.visibility = "visible";
return false;
}
</script>