Как получить имя файла из RepeaterCommandEventArgs в asp.net (WebForm) элемент управления Repeater? - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь получить имя файла изображения после нажатия кнопки «Удалить» в моем пользовательском интерфейсе, чтобы передать его в C #, чтобы удалить файл из папки.

Мой код aspx:

<asp:Repeater ID="RepeaterImages" runat="server" OnItemCommand="RepeaterImages_ItemCommand">
    <ItemTemplate>
        <asp:Image ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' />
        <br />
        <asp:Button ID="btnDelete" runat="server" Width="80px" Text="Delete" CommandName="delete" UseSubmitBehavior="false" />
    </ItemTemplate>
</asp:Repeater>

Мой C #:

protected void RepeaterCommand(object source, RepeaterCommandEventArgs e)
{
    RepeaterItem itemToRemove = e.Item;
    String sessionItemToRemove = itemToRemove.ToString();
    Console.WriteLine("%c", sessionItemToRemove);
    Session.Remove(sessionItemToRemove);
}

1 Ответ

0 голосов
/ 22 сентября 2018

То, что вы пытаетесь сделать, работает только в событии ItemDataBound, а не в событии ItemCommand.Но вы можете получить значение, подобное этому

protected void RepeaterCommand(object source, RepeaterCommandEventArgs e)
{
    Image img = e.Item.FindControl("Image") as Image;
    Session.Remove(img.ImageUrl);
}

Или использовать CommandArgument кнопки

protected void RepeaterCommand(object source, RepeaterCommandEventArgs e)
{
    Session.Remove(e.CommandArgument.ToString());
}

Для того, чтобы вышеописанное работало, кнопкам необходимо следующее

<asp:Button ID="btnDelete" runat="server" CommandArgument='<%# Container.DataItem %>' />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...