Martin Wieland Ответов: 2

Asp.net fileupload предотвращает событие onclick?


Я наткнулся на вопрос, который кажется довольно простым... и все же я никак не могу заставить его работать. Я работаю над одним asp.net приложение C# webforms и у нас есть необходимость загрузить файл. Я поместил элемент управления fileupload на страницу и кнопку. Идея заключается в том, что пользователь выбирает файл, а затем нажимает на кнопку, чтобы сделать фактическую загрузку. Примеров было предостаточно, и я попробовал несколько - безрезультатно.

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

Я использую bootstrap, jquery, scriptmanager и masterpages, поэтому я сделал простую форму, которая урезана до простого html, и она все еще не работает. Я поставил точку останова в событии onclick кнопки. Если файл не выбран, эта точка останова попадает, но если я выбираю файл, а затем нажимаю кнопку, она не попадает, и ничего не происходит.

Я включил разметку и codebehind. Кто - нибудь испытывал подобное поведение? Любая помощь приветствуется, заранее спасибо!

Что я уже пробовал:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testupload.aspx.cs" Inherits="Admin_testupload" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" runat="server"></asp:FileUpload>
            <hr />
            <asp:LinkButton ID="lbt_Go" runat="server" OnClick="lbt_Go_Click">Test</asp:LinkButton>
        </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Admin_testupload : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void lbt_Go_Click(object sender, EventArgs e)
    {
        var x = "breakpoint";
    }
}

2 Ответов

Рейтинг:
11

Martin Wieland

Спасибо за ваше предложение, но использование панели обновления не помогло.

Инструментарий Ajax Control Toolkit имеет расширенную загрузку файлов, которая действительно работала, поэтому я уже готовился пойти по этому пути, когда наконец нашел ответ: стандартный элемент управления fileupload по умолчанию ограничен ~ 4 МБ, и все мои тестовые файлы оказались больше. Как только я изменил этот лимит в web.config, все работало так, как ожидалось. Однако было бы неплохо получить какое-то исключение, чтобы вызвать эту проблему.

Я считаю себя дизайнером веб-форм silver fox, но раньше мне никогда не приходилось загружать файлы. Я действительно чувствую себя немного глупо, что столкнулся с этой проблемой, но я рад, что теперь она работает.


Рейтинг:
1

Member 14041273

Попробуйте использовать панель обновления. которые помогут вам решить вашу проблему.

<asp:UpdatePanel ID="UpdatePanel" runat="server">
    <ContentTemplate>
        <asp:FileUpload ID="FileUpload1" runat="server"></asp:FileUpload>
        <hr />
        <asp:LinkButton ID="lbt_Go" runat="server" OnClick="lbt_Go_Click">Test</asp:LinkButton>        
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID = "lbt_Go" />
    </Triggers>
</asp:UpdatePanel>


F-ES Sitecore

Я не думаю, что FileUpload работает внутри панели обновления. Он все равно не работает асинхронно.