4. 接続文字列を追加する
Windows Azureストレージへのアクセス用の接続文字列を追加します。
ソリューションエクスプローラで、[CloudService1]クラウドサービスプロジェクト内の「ロール」フォルダー内にある[MvcWebRole1]を右クリックし、[プロパティ]をクリックします。表示された[MvcWebRole1]のプロパティページ内の[設定]タブをクリックします。[設定の追加]ボタンをクリックし、Windows Azureストレージへのアクセスのための接続文字列を追加します。
[名前]ボックスの値は任意ですが、ここでは「DataConnectionString」と入力します。[種類]リストでは[接続文字列]を選択します。[値]ボックスでは、右側の[...]ボタンをクリックし、表示された[ストレージ接続文字列]ダイアログボックスで、[開発ストレージの使用]ラジオボタンが選択されていることを確認し、[OK]ボタンをクリックします(図7)。すると、[Value]ボックスに「UseDevelopmentStorage=true」と入力されます。これにより、Windows Azureストレージのローカル仮想ストレージ環境である開発ストレージ(Development Storage)の使用を指定します(図8)。最後に、[MvcWebRole1]のプロパティページを保存します。
上記の手順で接続文字列の追加した後、ソリューションエクスプローラで、[CloudService1]クラウドサービスプロジェクト内のサービス定義ファイル(ServiceDefinition.csdef)やサービス構成ファイル(ServiceConfiguration.cscfg)をダブルクリックして表示してみてください。追加したDataConnectionString接続文字列の定義と設定値が反映されていることが分かるはずです。
5. ビュー(Views/Home/Index.aspx)を修正する
既定で作成されたビューのViews/Home/Index.aspxに、リスト1のようにコードを追加します(太字部分)。
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> ホーム ページ </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2><%: ViewData["Message"] %></h2> <p> ASP.NET MVC の詳細については、<a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a> を参照してください。 </p> <% using (Html.BeginForm("Index", "Home", FormMethod.Post, new {enctype = "multipart/form-data"})) { %> タイトル: <%= Html.TextBox("title") %> <br /><br /> 画像ファイル: <input type="file" id="file1" name="file1" size="30" /> <br /><br /> <input type="submit" value="アップロード" /> <% } %> </asp:Content>
追加コードでは、ASP.NET MVCのHTMLヘルパーの一つであるBeginFormヘルパーメソッドを使用して、HTMLの<form>タグをレンダリングします。ファイルのアップロードのためには、<form>タグのenctype属性に「multipart/form-data」を設定する必要がありますので、BeginFormヘルパーメソッドの最後のパラメーターにこの値を匿名オブジェクトとして渡しています。
<form>タグ内には、3つの入力部品を配置します。まず、TextBoxヘルパーメソッドにより、テキストボックス(<input type="text">タグ)をレンダリングします。そして、ファイル選択ボックス(<input type="file">タグ)、送信ボタン(<input type="submit">タグ)の2つの入力部品を配置します。