Asp:带有 CommandArgument 的 GridView 按钮

use*_*563 2 c# asp.net gridview webforms

我正在尝试通过单击按钮来获取 id。我的按钮位于 GridView 内

<asp:GridView runat="server" AutoGenerateColumns="false"
                            ID="UsersGridView" AllowPaging="true"
                            CssClass="table table-hover table-striped"
                            UseAccessibleHeader="true" GridLines="None">
                    <Columns>
                        <asp:BoundField DataField="User.FullName" HeaderText="User" />
                        <asp:BoundField DataField="Book.Title" HeaderText="Book" />
                        <asp:BoundField DataField="BooksReserved.DateOut" HeaderText="Return Date" 
                            FooterStyle-BackColor="#ff0000" DataFormatString="{0:d}" />
                        <asp:TemplateField ShowHeader="false">
                            <ItemTemplate>
                                <asp:LinkButton ID="userProfile" runat="server" OnCommand="userProfile_Command"
                                    CommandArgument='<% Eval("User.Id") %>'
                                    Text="Open User Profile" CssClass="btn btn-success" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
Run Code Online (Sandbox Code Playgroud)

在 Page_Load 方法后面的代码中,我从 3 个表加载 gridview 的数据:

protected void Page_Load(object sender, EventArgs e)
{
    // Users Grid
    var query = from u in db.Users
                join br in db.BooksReserveds on u.Id equals br.UserId
                join b in db.Books on br.BookId equals b.Id
                where br.DateOut < DateTime.Today
                orderby br.DateOut
                select new { User = u, BooksReserved = br, Book = b };

    UsersGridView.DataSource = query.ToList();
    UsersGridView.DataBind(); }
Run Code Online (Sandbox Code Playgroud)

单击按钮时,我尝试获取 id:

protected void userProfile_Command(object sender, CommandEventArgs e)
{
    try
    {
        int id = Int32.Parse(e.CommandArgument.ToString());
        var query = from u in db.Users
                    where u.Id == id
                    select u;
    } catch(Exception any)
    {
        Console.WriteLine(any.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到异常:“输入字符串的格式不正确。”

有谁知道为什么?

谢谢

Win*_*Win 6

你忘记#。语法应该是<%# %>

<asp:LinkButton ID="userProfile" runat="server" OnCommand="userProfile_Command"
   CommandArgument='<%# Eval("User.Id") %>'
   Text="Open User Profile" CssClass="btn btn-success" />
Run Code Online (Sandbox Code Playgroud)