Asp.Net MVC4.0公式チュートリアル入門ガイドの10--DetailとDeleteメソッドの表示
7937 ワード
このチュートリアルでは、自動的に生成されるDetailメソッドとDeleteメソッドを表示します.Movieコントローラを開き、Detailメソッドを表示
コード先行(Code First)は,Find法を用いてデータを容易に見つけることができる.メソッドには、コードがムービーレコードを処理しようとする前に、Findメソッドがムービーレコードを見つけることを確保する重要なセキュリティポイントが組み込まれています.例えば、ハッカーは、アドレスを変更することによって、http://localhost:xxxx/Movies/Details/1からhttp://localhost:xxxx/Movies/Details/12345(または実際のムービーライブラリに存在しない他のパラメータ値)に変更し、エラーを引き起こすことができる.ムービーが空かどうかをチェックしないと、データベースの取得エラーが発生します.
DeleteメソッドとDeleteConfirmedメソッドの表示
HTTP GET Deleteメソッドでは、指定したムービーは削除されません.Movieのビューを返します.削除を完了するには、(HttpPost)削除メソッドを実行します.GETリクエストの応答(この問題に対して編集操作、作成操作、または他のデータ変更操作)で削除操作を実行すると、セキュリティ・ホールが発生します.詳細については、スティーブン・ワルトのブログエントリASP.NET MVC Tip #46 — Don't use Delete Links because they create Security Holesを参照してください(削除リンクは使用しないでください.セキュリティ・ホールが発生するためです).
データを削除するHttpPostメソッドは、DeleteConfirmedと名付けられています.共通言語ライブラリ(CLR)を実行するには、リロードメソッドに独自の署名(同じメソッド名ですが、異なるパラメータリスト)が必要です.しかし、ここでは、削除方法GETとPOSTが同じ署名を持っている必要があります.パラメータとして整数を受け入れる必要があります.この問題を解決するために、いくつかの方法が選択できます.1つの方法は、方法に異なる名前を付けることです.これが足場メカニズムの前の例で行われたことです.しかし、これは小さな問題を導入した:ASP.NETはurlの各部分をマッピングしてメソッドを実行します.メソッドの名前を変更すると、ルーティングは通常このメソッドを見つけることができません.解決策は、DeleteConfirmedメソッドにActionName(「Delete」)プロパティを追加する例です.これはルーティングシステムに影響し、/Delete/URLを含むPOST要求はDeleteConfirmedメソッドを呼び出す.同じ名前と署名を持つ方法で問題が発生することを回避し、もう1つの一般的な方法は、Postメソッドの署名を人為的に変更し、未使用のパラメータを含むようにすることである.例えば、一部の開発者の増加は、このパラメータを使用せずにFormCollectionPOSTのパラメータとしてPostメソッドタイプに渡される.
終了語では、ローカルDBデータベースにデータを格納完全なASPを持つようになりました.NET MVCアプリ.映画を作成、読み取り、更新、削除、検索できます.
翻訳者注:原文全体の教程はすでに翻訳が終わって、初めて翻訳の仕事をして、足りないところはみんなが多く含むことを望みます.翻訳の過程は比較的に急いで、10編の文章が完成した後、最初から最後まで1回の校正を行って、目次と索引を増やして、誤字を修正して、そしていくつかの違和感のある直訳を意訳に修正しました.次の計画は、この例に基づいて、さらに深く模索し、研究する.
このチュートリアルのすべての記事のナビゲーション
本シリーズは全部で10編の文章で、Aspから翻訳した.Net MVC 4公式教程は、本シリーズの文章が簡潔で、紙幅が適当であるため、一つの例から説明し始め、全文は最終的に映画を管理する小さなシステムを完成し、初心者の入門Aspに非常に適している.Net MVC 4は、これにより開発を開始する.
原文は9編の文章で、訳者はその中の6編を2編に分解した.
1. Asp.Net MVC 4入門紹介
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/03/2800210.html
2.コントローラを追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/04/2801949.html
3.ビューを追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/04/2801988.html
4.モデルを追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/05/2803012.html
5.コントローラからのデータモデルへのアクセス
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/05/2803429.html
6.EditメソッドとEditビューの表示
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/05/2804100.html
http://www.cnblogs.com/seawaving/archive/2012/12/06/2804590.html
7.Movieモデルとライブラリテーブルにフィールドを追加する
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/06/2805401.html
8.モデルの検証の追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/06/2806322.html
9.DetailおよびDeleteメソッドの表示
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/10/2811064.html
public ActionResult Details(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
コード先行(Code First)は,Find法を用いてデータを容易に見つけることができる.メソッドには、コードがムービーレコードを処理しようとする前に、Findメソッドがムービーレコードを見つけることを確保する重要なセキュリティポイントが組み込まれています.例えば、ハッカーは、アドレスを変更することによって、http://localhost:xxxx/Movies/Details/1からhttp://localhost:xxxx/Movies/Details/12345(または実際のムービーライブラリに存在しない他のパラメータ値)に変更し、エラーを引き起こすことができる.ムービーが空かどうかをチェックしないと、データベースの取得エラーが発生します.
DeleteメソッドとDeleteConfirmedメソッドの表示
//
// GET: /Movies/Delete/5
public ActionResult Delete(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
//
// POST: /Movies/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Movie movie = db.Movies.Find(id);
db.Movies.Remove(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
HTTP GET Deleteメソッドでは、指定したムービーは削除されません.Movieのビューを返します.削除を完了するには、(HttpPost)削除メソッドを実行します.GETリクエストの応答(この問題に対して編集操作、作成操作、または他のデータ変更操作)で削除操作を実行すると、セキュリティ・ホールが発生します.詳細については、スティーブン・ワルトのブログエントリASP.NET MVC Tip #46 — Don't use Delete Links because they create Security Holesを参照してください(削除リンクは使用しないでください.セキュリティ・ホールが発生するためです).
データを削除するHttpPostメソッドは、DeleteConfirmedと名付けられています.共通言語ライブラリ(CLR)を実行するには、リロードメソッドに独自の署名(同じメソッド名ですが、異なるパラメータリスト)が必要です.しかし、ここでは、削除方法GETとPOSTが同じ署名を持っている必要があります.パラメータとして整数を受け入れる必要があります.この問題を解決するために、いくつかの方法が選択できます.1つの方法は、方法に異なる名前を付けることです.これが足場メカニズムの前の例で行われたことです.しかし、これは小さな問題を導入した:ASP.NETはurlの各部分をマッピングしてメソッドを実行します.メソッドの名前を変更すると、ルーティングは通常このメソッドを見つけることができません.解決策は、DeleteConfirmedメソッドにActionName(「Delete」)プロパティを追加する例です.これはルーティングシステムに影響し、/Delete/URLを含むPOST要求はDeleteConfirmedメソッドを呼び出す.同じ名前と署名を持つ方法で問題が発生することを回避し、もう1つの一般的な方法は、Postメソッドの署名を人為的に変更し、未使用のパラメータを含むようにすることである.例えば、一部の開発者の増加は、このパラメータを使用せずにFormCollectionPOSTのパラメータとしてPostメソッドタイプに渡される.
public ActionResult Delete(FormCollection fcNotUsed, int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
db.Movies.Remove(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
終了語では、ローカルDBデータベースにデータを格納完全なASPを持つようになりました.NET MVCアプリ.映画を作成、読み取り、更新、削除、検索できます.
翻訳者注:原文全体の教程はすでに翻訳が終わって、初めて翻訳の仕事をして、足りないところはみんなが多く含むことを望みます.翻訳の過程は比較的に急いで、10編の文章が完成した後、最初から最後まで1回の校正を行って、目次と索引を増やして、誤字を修正して、そしていくつかの違和感のある直訳を意訳に修正しました.次の計画は、この例に基づいて、さらに深く模索し、研究する.
このチュートリアルのすべての記事のナビゲーション
本シリーズは全部で10編の文章で、Aspから翻訳した.Net MVC 4公式教程は、本シリーズの文章が簡潔で、紙幅が適当であるため、一つの例から説明し始め、全文は最終的に映画を管理する小さなシステムを完成し、初心者の入門Aspに非常に適している.Net MVC 4は、これにより開発を開始する.
原文は9編の文章で、訳者はその中の6編を2編に分解した.
1. Asp.Net MVC 4入門紹介
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/03/2800210.html
2.コントローラを追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/04/2801949.html
3.ビューを追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/04/2801988.html
4.モデルを追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/05/2803012.html
5.コントローラからのデータモデルへのアクセス
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/05/2803429.html
6.EditメソッドとEditビューの表示
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/05/2804100.html
http://www.cnblogs.com/seawaving/archive/2012/12/06/2804590.html
7.Movieモデルとライブラリテーブルにフィールドを追加する
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/06/2805401.html
8.モデルの検証の追加
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/06/2806322.html
9.DetailおよびDeleteメソッドの表示
・原文住所:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods
・訳文アドレス:http://www.cnblogs.com/seawaving/archive/2012/12/10/2811064.html