自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

2010年11月10日水曜日

asp.net mvc2メモ

参照用ソースのメモです。
1、Controllersフォルダにコントローラーを作る
2、Viewsフォルダにコントローラーごとにフォルダを作って、下にコントローラーメッソド(Action)ごとにビューページを作る
3、Global.asax.csにデフォールトページ或はコントローラーを指定する

4、コントローラーサンプル
namespace MvcApplicationEmpty.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public string Index()
        {
            return "Helo MVC.";
        }

        public ViewResult Default()
        {
            ViewData["greeting"] = "from HomeController.Default";
            return View();
        }

        public string AjaxTest()
        {
            return "({\"a\":\"1\", \"b\":\"2\"})";
        }

        public string DoLink1()
        {
            return "HomeController.DoLink1";
        }

        [HttpGet]
        public ViewResult DoLink2()
        {
            return View();
        }

        [HttpPost]
        public ViewResult DoLink2(GuestResponse pobjGuestResponse)
        {
            if (ModelState.IsValid)
                return View("Thanks", pobjGuestResponse);
            else
                return View();
        }
    }
}
5、ビューサンプル
<body>
    <div>
        Home.Default
        <%: ViewData["greeting"] %>
        <%: Html.ActionLink("HtmlLink1", "DoLink1") %>
        <%: Html.ActionLink("HtmlLink2", "DoLink2") %>
    </div>
</body>
Visual Studio 2008以前のバージョンは下記のように記述する
<%= Html.Encode(ViewData["greeting"]) %>,
6、Global.asax.csサンプル
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // ルート名
        "{controller}/{action}/{id}", // パラメーター付きの URL
        new { controller = "Home", action = "Default", id = UrlParameter.Optional } // パラメーターの既定値
    );

}
7、Modelsフォルダにモデルクラスを作る
using System.ComponentModel.DataAnnotations;
public class GuestResponse
{
    [Required(ErrorMessage="お名前を入力してください。")]
    public string Name { get; set; }
    [Required(ErrorMessage = "メールアドレスを入力してください。")]
    public string Email { get; set; }
    [Required(ErrorMessage = "携帯番号を入力してください。")]
    public string Phone { get; set; }
    [Required(ErrorMessage = "参加不参加を入力してください。")]
    public bool? WillAttend { get; set; }
}
8、DoLink2.aspxビュー
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplicationEmpty.Models.GuestResponse>" %>
...
<body>
    <div>
    DoLink2
    </div>
    <div>
    <%
        using (Html.BeginForm())
        {
    %>
            <%: Html.ValidationSummary()%>
            <p>あなたの名前:<%: Html.TextBoxFor(x => x.Name) %><%: Html.ValidationMessageFor(x => x.Name) %></p>
            <p>あなたのメール:<%: Html.TextBoxFor(x => x.Email) %></p>
            <p>あなたの携帯:<%: Html.TextBoxFor(x => x.Phone) %></p>
            <p>希望:<%: Html.DropDownListFor(x => x.WillAttend, 
                      new[]
                      {
                          new SelectListItem{Text="Yes", Value=bool.TrueString},
                          new SelectListItem{Text="No", Value=bool.FalseString},
                      },
                       "選択してください。",
                       "asdfasf"
                      ) 
                      %>
            </p>
            <button>確定</button>
            <div>
                <script language=javascript>
                    alert('<%: Html.ValidationMessageFor(x => x.Name, "asdfadsfsafafsaf") %>');
                </script>
            </div>
    <%
        }
    %>
    </div>
</body>
9、Thanks.aspxビュー
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplicationEmpty.Models.GuestResponse>" %>
...
<body>
    <div>
    Home.Thanks
    </div>
    <div><%: Model.Name %></div>
    <div><%: Model.Email %></div>
    <div><%: Model.Phone %></div>
    <div><%: Model.WillAttend %></div>
</body>

0 件のコメント:

コメントを投稿

ホームページ