2015-09-01 3 views
1

У меня есть файл загрузка, как это:контроля загрузки файла Asp, если есть файл

<asp:FileUpload id="FileUploadControl" runat="server" /> 
    <asp:Button runat="server" id="UploadButton" class="btn btn-default disabled" text="Upload" onclick="UploadButton_Click" /> 
    <br /><br /> 
    <asp:Label runat="server" id="StatusLabel" text="Upload status: " /> 

и код позади:

protected void UploadButton_Click(object sender, EventArgs e) 
{ 
    if(FileUploadControl.HasFile) 
    { 
     try 
     { 
      string filename = Path.GetFileName(FileUploadControl.FileName); 
      FileUploadControl.SaveAs(Server.MapPath("~/") + filename); 
      StatusLabel.Text = "Upload status: File uploaded!"; 
     } 
     catch(Exception ex) 
     { 
      StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message; 
     } 
    } 
} 

Я хочу что-то, чтобы проверить, если FileUpload есть файл и активная моя кнопка UploadButton ... точно изменить класс CSS на btn btn-default active. Я не сейчас, если возможно ???

ответ

2

Вы можете добавить FileUpload OnChange на стороне клиента событий, а затем яваскрипта обновление его классов, например:

<asp:FileUpload id="FileUploadControl" onchange="activateButton()" runat="server" /> 
<asp:Button runat="server" id="UploadButton" class="btn btn-default disabled" text="Upload" onclick="UploadButton_Click" /> 

и в JavaScript:

<script> 
    function activateButton() { 
     document.getElementById("<%=UploadButton.ClientID%>").className = "btn btn-default active"; 
    } 
</script> 

Это обычный JavaScript, если вы уже используя jquery, может достичь того же самого (посмотрите на @avi answer для деталей).

+0

Спасибо :) работа как шарм –

0

Вы должны использовать RequiredFieldValidator, чтобы проверить, выбран ли файл или нет, если нет, то не позволяйте сообщению страницы вернуться, даже если кнопка нажата.

<asp:FileUpload ID="FileUpload1" runat="server" /> 
<asp:RequiredFieldValidator ID="rfvFileupload" runat="server" 
               ControlToValidate="FileUpload1"/> 

Вы не сможете оставлять сообщения до тех пор, пока файл не будет выбран с помощью элемента управления загрузкой файлов.

3

Я думаю, что это должно быть сделано лучше, используя jquery. Попробуйте что-нибудь вроде:

$("#fileinput").change(function() { 
    $("#yourbutton").removeClass("disabled").addClass("active"); 
}); 

Here - образец. Вы должны сделать правильные замены для id.

+2

Вы можете просто сделать:.. '$ ("# Yourbutton") removeClass ('отключено') addClass ("активный");' – zed

0

$(".FileUploadControl").on('change', function() { 
 
     if (document.getElementById('<%= FileUploadControl.ClientID %>').files.length === 0) 
 
\t \t { 
 
\t \t // File upload do not have file 
 
\t } 
 
\t else { 
 
\t // File upload has file 
 
\t $(".FileUploadControl").addClass("btn btn-default active"); 
 
\t } 
 
});