我在asp页面上使用以下命令参数:
<asp:TemplateField ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:LinkButton ID="lnkView" runat="server" Text="View" OnClick="View" CommandArgument='<%# Eval("fldDispatchNo")+","+Eval("UniqueKey") %>'></asp:LinkButton>
</ItemTemplate>
命令参数中的 uniquekey 是使用GUID生成的。 这是我在onclick事件中的代码:
protected void View(object sender, EventArgs e)
{
LinkButton b = (LinkButton)sender;
string arguments = b.CommandArgument;
string[] args = arguments.Split(',');
string id = args[0].ToString();
string code = args[1].ToString();
//int ID = int.Parse((sender as LinkButton).CommandArgument[1].ToString());
string embed = "<object data=\"{0}{1}\" type=\"application/pdf\" width=\"700px\" height=\"500px\">";
embed += "If you are unable to view file, you can download from <a href = \"{0}{1}&download=1\">here</a>";
embed += " or download <a target = \"_blank\" href = \"http://get.adobe.com/reader/\">Adobe PDF Reader</a> to view the file.";
embed += "</object>";
ltEmbed.Text = string.Format(embed, ResolveUrl("~/FileCS.ashx?Code="), code);
ModalPopupExtender1.Show();
string IDE = ID.ToString();
showdetailsonpopup(IDE);
}
现在我只想将代码(GUID生成的代码)传递给另一个页面。在FileCS.ashx页面中,我有以下代码:
public class FileCS : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string code = context.Request.QueryString["Code"];
DataTable file = GetAFile(code);
我想使用数据库中的“代码”获取数据。但我在FileCS.ashx中得到错误
“对象引用未设置为对象的实例”。
我传递的示例GUID代码是“57536028-38d0-40aa-a035-b36d8e925e81”。
答案 0 :(得分:0)
您需要URLEncode值:
ltEmbed.Text = string.Format(embed, ResolveUrl("~/FileCS.ashx?Code="), HTTPUtility.UrlEncode(code));
我还怀疑GetFile()
方法中存在其他问题。