この手法を使用すると、再コンパイルせずに、データ、ロジック、およびUIの問題を分離したまま、ユーザーに表示されるメッセージを変更できます。「シンプル」ではありませんが、きれいです。
免責事項:IDEを使用して書かれていません
Webフォーム
<div><asp:Literal id="litHelloMessage" runat="server" text="<%=GetHelloMessage() %>" />
<asp:Literal id="litName" runat="server" text="<%=User.Name %>"/>
コードビハインド
public class MyPage : Page
{
public User User { get; set; }
public void Page_Load()
{
// logic to fetch the user from your persistence store
// e.g. User = MyUserRepo.Fetch(uid);
// Important
DataBind();
}
public string GetHelloMessage()
{
// this is straight forward, alternatively you could have some logic here to
// derive which which message is shown to the user
litHelloMessage = GetLocalResourceObject(User.MessageResourceKey).ToString();
}
}
リソースファイル(App_LocalResources / mypage.resx)
Key Value
"HelloMessage" "Hello my Name is"
"HiMessage" "Hi, my Name is"
ユーザークラス
public class User
{
public string Name { get; set; }
public string MessageResourceKey { get; set; }
}
サンプルデータ
Name MessageResourceKey
"Marco" "HelloMessage"
"Luca" "HiMessage"