gridview テンプレートの一部として asp:hyperlink コントロールがあります。aspx ページのコードを以下に示します。
asp:HyperLink runat="server" ID="lnkEdit" ToolTip="Edit article" NavigateUrl='<%# GetUrl(Eval("ID").ToString(), Eval("CategoryID").ToString()) %>' ImageUrl="~/Images/Edit.gif"
NavigateUrl 値は分離コード メソッド GetUrl(string, string) から取得されます。コードは正常に動作し、次のようになります。
protected string GetUrl(string id, string categoryID)
{
var CategoryID = string.Empty;
if (!String.IsNullOrEmpty(Request.QueryString["CatID"]))
{
CategoryID = Request.QueryString["CatID"].ToString();
}
else if (!String.IsNullOrEmpty(categoryID))
{
CategoryID = categoryID;
}
return "~/TBSArticles/WriteOrEditArticle.aspx?ID=" + id + "&CatID=" + CategoryID;
}
aspx ページ内で三項演算子を使用してコード ビハインド メソッドを置き換えたいと考えています。以下のようなことを試しましたが、うまくいきませんでした:
asp:HyperLink runat="server" ID="lnkEdit" ToolTip="Edit article" NavigateUrl='<%# "~/TBSArticles/WriteOrEditArticle.aspx?ID=" + Eval("ID") + "&CatID=" + Eval(this.Request.QueryString["CatID"].ToString()) != ""? this.Request.QueryString["CatID"] : Eval("CategoryID")) %>' ImageUrl="~/Images/Edit.gif"