Здравствуйте, я пытаюсь добавить файл загрузки внутри подробного просмотра. Я прикрепляю сюда некоторые части из моего кода:
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="586px"
DefaultMode="Edit" AutoGenerateRows="False" BorderColor="White"
BorderStyle="None" DataSourceID="EntityDataSource1" GridLines="None" DataKeyNames="UserName" OnItemUpdated="DetailsView1_ItemUpdated" ONItemEditing="DetailsView1_ItemEditing">
, тогда управление загрузкой файла помещается внутри поля шаблона:
<asp:TemplateField HeaderText="Foto">
<EditItemTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
и источник данных:
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=mesteriEntities" DefaultContainerName="mesteriEntities"
EnableFlattening="False" EntitySetName="Users"
EnableUpdate="True" AutoGenerateWhereClause="True"
EnableInsert="True">
<WhereParameters>
<asp:SessionParameter Name="UserName" SessionField="New" Type="String" />
</WhereParameters>
</asp:EntityDataSource>
Код позади:
protected void DetailsView1_ItemEditing(object sender, DetailsViewInsertEventArgs e)
{
FileUpload fu1 = (FileUpload)DetailsView1.FindControl("FileUpload1");
if (fu1 == null)
e.Cancel = true;
if (fu1.HasFile)
{
try
{
string fileName = Guid.NewGuid().ToString();
string virtualFolder = "~/UserPics/";
string physicalFolder = Server.MapPath(virtualFolder);
// StatusLabel.Text = "Upload status: File uploaded!";
string extension = System.IO.Path.GetExtension(fu1.FileName);
fu1.SaveAs(System.IO.Path.Combine(physicalFolder, fileName + extension));
e.Values["foto"] = System.IO.Path.Combine(physicalFolder, fileName + extension);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
else
e.Cancel = true;
}
Я не уверен, почему не работает. Он не загружает файл на сервер и не добавляет ссылку в базу данных файла. Что я тут сделал не так?
спасибо