ASP.NET MVCフォーム提出チュートリアル
前の2つの文章では、私たちはそれぞれ簡単なASPを作りました.NET MVCの例とデータのバインドを行い,本稿ではASP.NET MVC Frameworkはフォームの提出を実現し、ここでフォームデータを取得する方法がいくつかあり、自動的にマッピングしたり、Requestオブジェクトで取得したりすることができます.
新規データの実装
1.ここでは、前のBlogの例も採用しています(後述する例では、この例をずっと使用しています).その前に、前回の例のBlogRepositoryを変更して、Addメソッドを追加します.
2.新しいPostページへのリンクをIndexビューに追加し、ActionLink()メソッドを使用します.
上のコードでは、4行目にNew Postハイパーリンクを追加し、そのリンクのactionをNewと指定します.ここではaction名で指定することもできます.
3.コントローラのNew actionコードを作成します.ここでは、新しいPostビューに移行するだけで、他の操作は必要ありません.
4.Newビューを作成します.ここでは、ユーザーがデータを入力するためのフォームを提供します.HTMLコードを作成するには、次のようにします.
フォームデータの取得
上記の手順が完了すると、コントローラのAdd actionのコードを作成できます.ここでフォームのデータを取得し、データベース、ASPに書き込む必要があります.NET MVC Frameworkでは、フォームデータを取得する方法がいくつか用意されています.
1.自動マッピング
この方法では、メソッドのパラメータ定義フォームの名前、ASP.NET MVC Frameworkは、フォームのデータをformのActionに直接割り当てる方法パラメータに、次のコードで示すように、マッピングを自動的に支援します.
2.第1の方法では、インタフェース上のフォームが多すぎると、メソッドのパラメータが大きくなり、再構築でいう「汚れたコード」になってしまうようです.この問題を解決するために、フォーム変数を使用してフォームの値を取得し、コードを次のように見ることもできます.
上記の2つの方法は、フォームの値を取得し、データベースに保存してIndex actionに移行して処理します.
3.MVCToolkitでは、フォームの値を取得するための拡張方法もいくつか提供されています.後述します.
パス選択の設定
このステップはいつでも忘れられないが、今回はcontroller/actionの形式に変更し、コードは以下の通りである.
データ増加の完了
上記の例は、まずIndexビューに新しいPostリンクがある場合に実行されます.
New Postをクリックすると、
コミット後、新しいPostを追加し、Indexビューに移動します.
終わりの言葉
ASPについてNET MVC Frameworkで実装フォームの提出の簡単な例はここで終わります.前の3つの簡単な文章を通じて、皆さんはASPに対してNET MVC Frameworkはすでに大まかな認識を持っていて、後で私はいくつかの深い文章とMVCToolktiが提供するいくつかのHTML Helperの方法を書きます:)
新規データの実装
1.ここでは、前のBlogの例も採用しています(後述する例では、この例をずっと使用しています).その前に、前回の例のBlogRepositoryを変更して、Addメソッドを追加します.
public void Add(Post post)
{
BlogDataContext db = new BlogDataContext();
db.Posts.InsertOnSubmit(post);
db.SubmitChanges();
}
2.新しいPostページへのリンクをIndexビューに追加し、ActionLink()メソッドを使用します.
<h2>ASP.NET MVC Framework Sampleh2> <hr /> =Html.ActionLink("Home", new { action="Index"})%> |
=Html.ActionLink("New Post", new { action="New"})%>
<div> foreach (Post post in ViewData)
{ %> <div class="postitem"> <strong>Titlestrong>:=Html.Encode(post.Title) %>br> <strong>Authorstrong>:=Html.Encode(post.Author) %>br> <strong>PubDatestrong>:=Html.Encode(post.PubDate.ToShortDateString()) %>br> <strong>Contentstrong>:=Html.Encode(post.Description) %>br> div><br /> } %> div>
上のコードでは、4行目にNew Postハイパーリンクを追加し、そのリンクのactionをNewと指定します.ここではaction名で指定することもできます.
<h2>ASP.NET MVC Framework Sampleh2> <hr /> =Html.ActionLink("Home", "Index")%> | =Html.ActionLink("New Post", "New")%> <div> foreach (Post post in ViewData)
{ %> <div class="postitem"> <strong>Titlestrong>:=Html.Encode(post.Title) %>br> <strong>Authorstrong>:=Html.Encode(post.Author) %>br> <strong>PubDatestrong>:=Html.Encode(post.PubDate.ToShortDateString()) %>br> <strong>Contentstrong>:=Html.Encode(post.Description) %>br> div><br /> } %> div>
3.コントローラのNew actionコードを作成します.ここでは、新しいPostビューに移行するだけで、他の操作は必要ありません.
[ControllerAction]
public void New()
{
// RenderView("New");
}
4.Newビューを作成します.ここでは、ユーザーがデータを入力するためのフォームを提供します.HTMLコードを作成するには、次のようにします.
<h2>New Posth2> <hr /> <div class="postitem"> Title:<input id="title" name="title" type="text" /><br /><br /> Author:<input id="author" name="author" type="text" /><br /><br /> Content:<textarea id="description" name="description" cols="40" rows="5">textarea><br /><br /> <input type="submit" value="Save" /> div>
HTML form , action Post action, Add, method Post, :
<h2>New Posth2> <hr /> <div class="postitem"> <form action="Add" method="post"> Title:<input id="title" name="title" type="text" /><br /><br /> Author:<input id="author" name="author" type="text" /><br /><br /> Content:<textarea id="description" name="description" cols="40" rows="5">textarea><br /><br /> <input type="submit" value="Save" /> form> div>
フォームデータの取得
上記の手順が完了すると、コントローラのAdd actionのコードを作成できます.ここでフォームのデータを取得し、データベース、ASPに書き込む必要があります.NET MVC Frameworkでは、フォームデータを取得する方法がいくつか用意されています.
1.自動マッピング
この方法では、メソッドのパラメータ定義フォームの名前、ASP.NET MVC Frameworkは、フォームのデータをformのActionに直接割り当てる方法パラメータに、次のコードで示すように、マッピングを自動的に支援します.
[ControllerAction]
public void Add(string title, string author, string description)
{
Post post = new Post();
post.Title = title;
post.Author = author;
post.Description = description;
post.PubDate = DateTime.Now;
BlogRepository repository = new BlogRepository();
repository.Add(post);
RedirectToAction("Index");
}
2.第1の方法では、インタフェース上のフォームが多すぎると、メソッドのパラメータが大きくなり、再構築でいう「汚れたコード」になってしまうようです.この問題を解決するために、フォーム変数を使用してフォームの値を取得し、コードを次のように見ることもできます.
[ControllerAction]
public void Add()
{
Post post = new Post();
post.Title = Request.Form["title"];
post.Author = Request.Form["author"];
post.Description = Request.Form["description"];
post.PubDate = DateTime.Now;
BlogRepository repository = new BlogRepository();
repository.Add(post);
RedirectToAction("Index");
}
上記の2つの方法は、フォームの値を取得し、データベースに保存してIndex actionに移行して処理します.
3.MVCToolkitでは、フォームの値を取得するための拡張方法もいくつか提供されています.後述します.
パス選択の設定
このステップはいつでも忘れられないが、今回はcontroller/actionの形式に変更し、コードは以下の通りである.
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup RouteTable.Routes.Add(
new Route {
Url = "[controller]/[action]",
Defaults = new { action = "Index" },
RouteHandler = typeof(MvcRouteHandler)
});
}
データ増加の完了
上記の例は、まずIndexビューに新しいPostリンクがある場合に実行されます.
New Postをクリックすると、
コミット後、新しいPostを追加し、Indexビューに移動します.
終わりの言葉
ASPについてNET MVC Frameworkで実装フォームの提出の簡単な例はここで終わります.前の3つの簡単な文章を通じて、皆さんはASPに対してNET MVC Frameworkはすでに大まかな認識を持っていて、後で私はいくつかの深い文章とMVCToolktiが提供するいくつかのHTML Helperの方法を書きます:)