실버라이트에서는 기본적으로 Request를 사용할 수 없다. WebPage를 상속하지 않기 때문인데 이와 같은 경우 실버라이트를 호출하는 aspx 페이지에서 param을 이용해서 사용할 수가 있다.
우선 실버라이트를 호출하는 aspx 페이지에 가보면
<body>
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="initParams" value="ClientIP=<%=Request.UserHostAddress %>, cc=true,m=relative" />
<param name="source" value="/ClientBin/SilverlightMain.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>
</body>
위와 같은 코드가 있다. 위에서 빨간색 글 부분이 추가한 부분이다. initParams라는 파라미터로 Request를 사용해서 얻은 Client IP를 넘겨준다.
이 후 실버라이트 프로젝트로 가서 App.xaml.cs로 가면
private void Application_Startup(object sender, StartupEventArgs e)
{
string ip = "";
if (e.InitParams.ContainsKey("ClientIP"))
ip = e.InitParams["ClientIP"];
this.RootVisual = new MainPage(ip);
}
위와 같은 코드가 나온다. 마찬가지로 빨간색 글이 추가한 부분이고, 생성자에 전달받은 ip를 넘겨주는 것을 볼 수 있다.
private string ip;
public MainPage(string ip)
{
InitializeComponent();
this.ip = ip;
}
이 후 생성자에 전달받은 값을 넘겨받고 사용하면 된다.
'Development > Silverlight' 카테고리의 다른 글
DataGrid에서 Row Data 모두 가져오기 (0) | 2011.05.03 |
---|