解析ASP.NET Mvc開発の削除修正データ
目次:
1)明源動力から革新工場までの道のり
2)解析ASP.NET WebFormとMvc開発の違い
3)解析ASP.NET Mvcのクエリーデータインスタンス
4)解析ASP.NET Mvc開発のEF遅延ロード
-------------------------------------------------------------------------------------------------------
上のブログではASPについて紹介しています.NET MVCは、EFを使用して、データおよびEF内のDbQuery汎用オブジェクトによるデータの遅延ロードを問い合わせる.今日はEFを使用してデータを削除する方法を見てみましょう.
実は現在のWeb開発で通用するモデルは、フロントエンドがJsとJQueryを使ってバックエンドとデータのインタラクションを行うことです.では、フロントエンドに削除と更新のスクリプトを2つ追加します.コードは次のとおりです.
次に、このボタンのJsスクリプト関数を作成します.コードは次のとおりです.
上のJsコードの意味は、ユーザーが削除ボタンをクリックするとurlジャンプのアドレスが「/home/del」+id
クリック前の効果は下図のようで、urlアドレスは
これは,ブラウザがルーティングに従ってコントローラ(Controller)を要求し,コントローラがルーティングの構成に従ってビューメソッドに戻り,Html,Jsなどをブラウザに返そうとすることを意味する.
削除ボタンをクリックして確定し、urlアドレスが
私たちが構成したルーティング情報は「home/del」であることを示します.
そこで、コントローラのHomeControllerにdelメソッドを追加して、削除操作を完了します.コードは以下の通りです.
まず、MVCのデフォルトのルーティングテーブルの構成を見てみましょう.App_Startフォルダの下にあるRouteConfig.cs、コードは以下の通りです.
urのデフォルト構成モードは「{controller}/{action}/{id}」であることがわかります.
デフォルトの構成情報はdefaults:new{controller="Home"、action="Index"、id=UrlParameter.Optional}
特に注意するのはid=UrlParameter.Optionalはオプションです.
だから私たちはhomeControllerにいるはずです.csでdelタイプのActionメソッドを作成します.コードは次のとおりです.
これでデータの削除が完了します.
次に、修正されたコードについて説明します.まず、ビュー(View)コードを次のように示します.
変更@Html.HiddenFor(a=>a.AId)
タイトル:@Html.TextBox("txtName",(object)Model.ATitle)
@Html.TextBoxFor(a=>a.ATitle)
分類:
@Html.DropDownListFor(a=>a.ACate,ViewBag.CateList as IEnumerable)
内容:
@Html.TextAreaFor(a => a.AContent, 10, 60, null)
@Html.ActionLink(「戻る」,「Index」,「Home」)
}
バックエンドコードはどのように作成されますか?
次に、変更を実行するコードを示します.
これでMVCを使用して小さなサイトを構築するタスクを完了し、データの削除と変更の操作も完了しました.
本シリーズの文章に対して貴重な意見を提出することを歓迎します.
1)明源動力から革新工場までの道のり
2)解析ASP.NET WebFormとMvc開発の違い
3)解析ASP.NET Mvcのクエリーデータインスタンス
4)解析ASP.NET Mvc開発のEF遅延ロード
-------------------------------------------------------------------------------------------------------
上のブログではASPについて紹介しています.NET MVCは、EFを使用して、データおよびEF内のDbQuery汎用オブジェクトによるデータの遅延ロードを問い合わせる.今日はEFを使用してデータを削除する方法を見てみましょう.
実は現在のWeb開発で通用するモデルは、フロントエンドがJsとJQueryを使ってバックエンドとデータのインタラクションを行うことです.では、フロントエンドに削除と更新のスクリプトを2つ追加します.コードは次のとおりです.
@foreach (BlogArticle a in ViewData["DataList"] as List)
{
@a.AId
@a.ATitle
@a.BlogArticleCate.Name
@a.Enumeration.e_cname
@a.AAddtime
>
}
次に、このボタンのJsスクリプト関数を作成します.コードは次のとおりです.
function del(id) {
if (confirm(" ?")) {
<!-- ,js url -->
window.location="/home/del/"+ id;
}
}
上のJsコードの意味は、ユーザーが削除ボタンをクリックするとurlジャンプのアドレスが「/home/del」+id
クリック前の効果は下図のようで、urlアドレスは
これは,ブラウザがルーティングに従ってコントローラ(Controller)を要求し,コントローラがルーティングの構成に従ってビューメソッドに戻り,Html,Jsなどをブラウザに返そうとすることを意味する.
削除ボタンをクリックして確定し、urlアドレスが
私たちが構成したルーティング情報は「home/del」であることを示します.
そこで、コントローラのHomeControllerにdelメソッドを追加して、削除操作を完了します.コードは以下の通りです.
まず、MVCのデフォルトのルーティングテーブルの構成を見てみましょう.App_Startフォルダの下にあるRouteConfig.cs、コードは以下の通りです.
//
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
urのデフォルト構成モードは「{controller}/{action}/{id}」であることがわかります.
デフォルトの構成情報はdefaults:new{controller="Home"、action="Index"、id=UrlParameter.Optional}
特に注意するのはid=UrlParameter.Optionalはオプションです.
だから私たちはhomeControllerにいるはずです.csでdelタイプのActionメソッドを作成します.コードは次のとおりです.
//
public ActionResult Del(int id)
{
// try...catch
try
{
//
BlogArticle artTicle = new BlogArticle();
artTicle.AId = id;
// EF
db.BlogArticles.Attach(artTicle);
//
db.BlogArticles.Remove(artTicle);
//
db.SaveChanges();
// , Index
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{
return RedirectToAction(" ");
}
//return View();
}
これでデータの削除が完了します.
次に、修正されたコードについて説明します.まず、ビュー(View)コードを次のように示します.
@using (Html.BeginForm("Modify", "Home", FormMethod.Post))
{
@**@変更@Html.HiddenFor(a=>a.AId)
タイトル:@Html.TextBox("txtName",(object)Model.ATitle)
@Html.TextBoxFor(a=>a.ATitle)
分類:
@Html.DropDownListFor(a=>a.ACate,ViewBag.CateList as IEnumerable)
内容:
@Html.TextAreaFor(a => a.AContent, 10, 60, null)
@Html.ActionLink(「戻る」,「Index」,「Home」)
}
バックエンドコードはどのように作成されますか?
// Action post ,
[HttpGet]
///
///
///
/// Id
///
public ActionResult EditArticle(int id)
{
// ,
BlogArticle art = (from c in db.BlogArticles where c.AId == id select c).FirstOrDefault();
// , DropList
次に、変更を実行するコードを示します.
[HttpPost]
///
///
///
///
///
public ActionResult Modify(BlogArticle model)
{
try
{
//1. a. EF , b.
DbEntityEntry entry = db.Entry(model);
//2. unchanged
entry.State = System.Data.EntityState.Unchanged;
//3.
entry.Property(a => a.ATitle).IsModified = true;
entry.Property(a => a.AContent).IsModified = true;
entry.Property(a => a.ACate).IsModified = true;
//4.
db.SaveChanges();
//5. , /Home/List
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{
return Content(" ~~~" + ex.Message);
}
}
これでMVCを使用して小さなサイトを構築するタスクを完了し、データの削除と変更の操作も完了しました.
本シリーズの文章に対して貴重な意見を提出することを歓迎します.