2016-03-10 1 views
1

У меня есть веб-форма в ASP.NET и два поля входных файлов, так как пользователь должен загружать XML-файл через вход одного файла и видео через другой. Эти два входа (ids xmlurl и videourl в коде ниже) находятся в одной форме. У меня также есть две кнопки отправки (ids load_mp4_button и load_xml_button), которые пользователь должен нажать, когда захочет, чтобы файл был загружен. При первой кнопке карта должна быть загружена в соответствующий div, а второй - видео во втором div.ASP.NET одна веб-форма двух полей входных файлов

<form id="form1" runat="server" method="post"> 
<div id="map" class="map" runat="server"></div> 
<div id="info" runat="server">&nbsp;</div> 
<input id="xmlurl" runat="server" type="file" accept="text/xml" name="xmlurl" /> 
<input id="load_xml_button" runat="server" type="submit" /> 
<input id="videourl" runat="server" type="file" accept=".mp4" name="videourl" /> 
<input id="load_mp4_button" runat="server" type="submit" /> 
<video id="video" runat="server" width="640" height="480" controls="controls"> 
    Your browser does not support the video tag. 
</video> 
</form> 

Я добавил слушатель событий в C# для этих двух кнопок, чтобы преобразовать физический путь файла в URL и загрузить карту и видео. Например, на стороне сервера:

protected void Page_Load(object sender, EventArgs e) 
    { 
    //add event listeners 

     load_mp4_button.ServerClick += new EventHandler(this.mp4_button_clicked); 
     load_xml_button.ServerClick += new EventHandler(this.xml_button_clicked); 

    } 

protected void mp4_button_clicked(object sender, EventArgs e) 
    { 
     //request the first file 
     HttpPostedFile filePosted = Request.Files["videourl"]; 
     string url_path1 = Path2url(filePosted); 

     //do something with the file 

    } 
    protected void xml_button_clicked(object sender, EventArgs e) 
    { 
     //request the second file 
     HttpPostedFile filePosted = Request.Files["xmlurl"]; 

    } 

У меня есть проблема в том, что всякий раз, когда вы нажмете на первую кнопку, чтобы загрузить карту, а затем ударил второй, чтобы загрузить видео, карта исчезла , Хотя они отображаются в разных div. С чистыми слушателями событий js нет такой проблемы. Знает ли кто-нибудь, если это происходит, потому что эти поля ввода находятся в одной форме? Должен ли я попытаться использовать компонент asp из панели инструментов?

Заранее спасибо

+0

кнопки при нажатии вызывают обратную передачу и обновляют всю страницу, я бы рекомендовал использовать asp updatepanels –

ответ

0

Да, когда вы нажмете отправить он отправляет форму которой вы можете доступ в контроллер POST, если вы используете MVC. Таким образом, в этом случае оба ваших отправления делают то же самое, что отправляет всю форму, включая оба файла.

+0

его веб-формы, но и та же идея. – mijail

+0

Спасибо вам обоим за ответы! Я просто подумал добавить только одну кнопку для двух загрузок –

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