ASP.NET WebFormで動的にリンクを変更するコードと実行結果 - HyperLinkコントロールを利用した動的リンク
ASP.NET WebFormで動的にリンクを変更するコードと実行結果を紹介します。
概要
ASP.NETで動的にリンクを変更するには、HyperLinkコントロールを用いると簡単です。
なお、リンクの位置自体を動的に変更する場合は、HyperLinkコントロールを動的に生成します。
HyperLinkコントロールを動的に生成する場合は
こちらの記事を参照してください。
プログラム
UI
下図のUIを作成します。WebフォームにHyperLinkコントロールを設置します。
HyperLinkコントロールはツールパレットからデザイナにドラッグアンドドロップして配置できます。
aspxファイルのXMLは下記となります。
SimpleLink.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SimpleLink.aspx.cs" Inherits="HyperLinkDemo.SimpleLink" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" runat="server">リンクです</asp:HyperLink>
</div>
</form>
</body>
</html>
コード
下記のコードを記述します。
SimpleLink.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace HyperLinkDemo
{
public partial class SimpleLink : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["param"] == "google") {
HyperLink1.NavigateUrl = "http://www.google.co.jp";
HyperLink1.Text = "リンク (Google)";
}
else if (Request.QueryString["param"] == "microsoft") {
HyperLink1.NavigateUrl = "http://www.microsoft.com/ja-jp/";
HyperLink1.Text = "リンク (Microsoft)";
}
else {
HyperLink1.NavigateUrl = "http://www.ipentec.com";
HyperLink1.Text = "リンク (iPentec)";
}
}
}
}
解説
WebフォームのURLのパラメーターの"param"の値を確認し、HyperLinkコントロールのリンク先と凛子の文字列を変更します。paramパラメータの値が"google"であればGoogleへのリンク、"microsoft"であれば、Microsoftへのリンクに動的に変更します。パラメータが無い、または、パラメータがそれ以外の値の場合は、iPentecへのリンクを表示します。
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。パラメータがない場合はiPentecへのリンクが表示されます。
リンクをクリックするとiPentecのウェブサイトに遷移します。
続いてURLの末尾に"?param=google"を追加してアクセスします。リンクの文字列が、Googleに変わることが確認できます。
リンクをクリックすると、Googleに遷移します。
同様にURLの末尾に"?param=microsoft"を追加してアクセスします。リンクの文字列が、Microsoftに変わります。
リンクをクリックするとMicrosoftのWebサイトに遷移します。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用