DropDownList1.SelectedValue is null?

本文关键字:null is SelectedValue DropDownList1 | 更新日期: 2023-09-27 17:58:53

我无法从下拉框中获得除空值之外的任何其他值,我正在尝试将文件上载到不同的目录。。。

public class dropDownInfo
{
    public string pathName { get; set; }
    public string pathValue { get; set; }
}
string uploadFolder = "";
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // reference to directory
        //DirectoryInfo di = new DirectoryInfo("//DOCSD9F1/TECHDOCS/");
        DirectoryInfo di = new DirectoryInfo("D:/SMGUpload/SMGUpload/files/");
        // create list of directories
        List<dropDownInfo> DropDownList = new List<dropDownInfo>();
        foreach (DirectoryInfo i in di.GetDirectories())
        {
            dropDownInfo ddInfo = new dropDownInfo();
            ddInfo.pathName = i.FullName;
            ddInfo.pathValue = i.FullName;
            DropDownList.Add(ddInfo);
        }
        DropDownList1.DataSource = DropDownList;
        DropDownList1.DataTextField = "pathName";
        DropDownList1.DataValueField = "pathValue";
        DropDownList1.DataBind();
    }
}
protected void DropDownList1_IndexChanged(object sender, EventArgs e)
{
    uploadFolder = DropDownList1.SelectedItem.Value;
}
protected void ASPxUploadControl1_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
{
    if (e.IsValid)
    {
        string uploadDirectory = Server.MapPath("~/files/");
        //string uploadDirectory = @"''DOCSD9F1'TECHDOCS'";
        string fileName = e.UploadedFile.FileName;
        //string uploadFolder = DropDownList1.SelectedValue;
        //string path = (uploadDirectory + uploadFolder + "/" + fileName);
        string path = Path.Combine(Path.Combine(uploadDirectory, uploadFolder), fileName);
        e.UploadedFile.SaveAs(path);
        e.CallbackData = fileName;
    }
}

DropDownList1.SelectedValue is null?

在访问Value属性之前进行检查。

if (DropDownList1.SelectedItem != null)
    uploadFolder = DropDownList1.SelectedItem.Value;

回发后下拉列表没有值。您只在第一次加载页面时进行绑定,然后页面会返回(索引已更改),项目不会重新绑定。

是否在页面或任何控件上禁用了viewstate?这可能会导致您所描述的问题。

此外,本地变量uploadFolder将永远不会在post-back之间保留。您需要将其存储在会话中或页面上的某个位置。

Session["uploadFolder"] = DropDownList1.SelectedItem.Value

您需要在发布时重新设置DataSource,但不要重新绑定它,否则也会重置所选索引。