【问题标题】:ViewState not working for AjaxFileUploadViewState 不适用于 AjaxFileUpload
【发布时间】:2017-10-26 07:11:49
【问题描述】:

我将上传文件的名称存储在 AjaxFileUpload UploadComplete 函数的 ViewState 中,但在回发发生时无法在 Page_Load 函数中检索该名称。 ViewState 为空。 当我使用 ViewState 在一个简单的按钮单击函数中存储一些变量时,这些值在回发后在 Page_Load 中可用。

所以问题在于 AjaxFileUpload UploadComplete 事件。

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        btnParseDmp.Enabled = false;
        btnParseDmp.CssClass = "btnParseDmpDisable";
        lblTxtFile.Text = "";
        lblWindbgTxtFile.Text = "";
        btnTxt.Visible = false;
        btnWindbgTxt.Visible = false;
        lblOpt.Text = "";
        lblStatus.Text = "";

        fileListBox.Items.Clear();
        m_fileName = "";
        latestDir = null;
        bParseClicked = false;
        dirName = "";
        FileName = "";
        latestParsedFile = "";
        fileListBox.Visible = false;
        Response.Clear();

        ViewState["m_fileName"] = null;
        ViewState["latestDir"] = null;
        ViewState["bParseClicked"] = false;
        ViewState["dirName"] = null;
        ViewState["latestParsedFile"] = null;
        ViewState["FileName"] = null;
    }
    else
    {

        if (ViewState["FileName"] != null)
        {
            Console.WriteLine("Not null");
        }
        else
            Console.WriteLine("Null");

        m_fileName = (string)ViewState["m_fileName"];
        latestDir = (DirectoryInfo)ViewState["latestDir"];
        bParseClicked = (bool)ViewState["bParseClicked"];
        dirName = (string)ViewState["dirName"];
        FileName = (string)ViewState["FileName"];
        latestParsedFile = (string)ViewState["latestParsedFile"];
    }
}

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    Random rnd = new Random(DateTime.Now.Millisecond);
    int num = rnd.Next(1, 2147483640);
    dirName = System.Web.HttpRuntime.AppDomainAppPath + "Parsings\\" + num;
    ViewState["dirName"] = dirName;
    System.IO.Directory.CreateDirectory(dirName);

    FileName = e.FileName;
    ViewState["FileName"] = FileName;
    FileInfo fz = new FileInfo(FileName);
    string ext = fz.Extension;
    ext = ext.ToLower();
    if (ext.Contains("zip"))
    {

        AjaxFileUpload1.SaveAs(System.Web.HttpRuntime.AppDomainAppPath + "Temp" + "\\" + e.FileName);
    }
    else
    {
        AjaxFileUpload1.SaveAs(dirName + "\\" + e.FileName);
    }
    bParseClicked = false;
    ViewState["bParseClicked"] = bParseClicked;
}

【问题讨论】:

    标签: asp.net ajaxcontroltoolkit


    【解决方案1】:

    AjaxFileUpload 的工作方式,您将无法获取视图状态。

    【讨论】:

    • 那么我还可以使用什么其他选择?因为我需要在回发中保留文件名。
    • 尝试使用会话来跟踪值。即使这不是一个很好的方法,也需要使用它来解决问题。
    • 我之前使用的是 Session。将其替换为 ViewState,因为如果同时在两个不同的选项卡中打开同一页面,则会话数据会发生冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多