每当就部分科目被,接下去我们将探究自动生成的Details和Delete方法。

转自:http://www.cnblogs.com/powertoolsteam/p/3656203.html

查询Details和Delete方法

开辟Movie控制器并查阅Details方法。

爱博体育 1

public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}

MVC
scaffolding引擎扩展了一个诠释讲明,在调用的HTTP请求方法被,GET请求有三独URL段,Movies控制器,Details方法以及ID值。

Code First
使得您可轻松的以Find.aspx)方法来查找数据。一个要的安全力量内置到了道吃。方法首先验证Find格局都找到了相同管辖电影,然后又履行外代码。例如,黑客可以通过改http://localhost:xxxx/Movies/Details/1http://localhost:xxxx/Movies/Details/12345
(或一些其他值,不表示实际影片的值)从而令链接URL
现身错误。假若你没有检测是否找到了Movie, null Movie会导致出现数量失实。

查看DeleteDeleteConfirmed方法。

// GET: /Movies/Delete/5

public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

Movie movie = db.Movies.Find(id);

if (movie == null)

{

return HttpNotFound();

}

return View(movie);

}

// POST: /Movies/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

Movie movie = db.Movies.Find(id);

db.Movies.Remove(movie);

db.SaveChanges();

return RedirectToAction("Index");

}

请注意,DeleteHTTP Get
方法不相会去指定的视频,它回到去电影的视图,您能够于这视图中提交
HttpPost) 删除电影。若是应用GET
请求执行删除操作(或者实施编辑操作,创设操作依旧转移数据的外其余操作)
开辟了一个安全漏洞。对是的详细音讯,请参阅斯蒂芬(Stephen) · 瓦尔特的博客ASP.NET
MVC Tip #46 — Don’t use Delete Links because they create Security
Holes
.

拿去除数据的HttpPost办法命名也唯一签名或名称的 DeleteConfirmed
方法。这一点儿独主意的签署如下所示:

// GET: /Movies/Delete/5

public ActionResult Delete(int? id)

//

// POST: /Movies/Delete/5

[HttpPost, ActionName("Delete")]

public ActionResult DeleteConfirmed(int id)

公家语言运行时 (CLR)重载方法时,需要艺术有优异唯一的签名
(方法名称一致只是不同之参数列表)。不过,在此处您要少种去方法 — —
一个
GET方法以及一个POST方法它们还装有相同的签字。(他们都得承受一个平头作为参数)。

设若化解这或多或少,可以发几乎栽方法。一是运用不同之点子名称。这是框架代码在前边的言传身教中所用的法门。然则,这虽带来了一个粗题目:
ASP.NET 将有些的
URL按号映射到操作方法,假设你更命名了法,平时Routing将不可能找到该模式。解决格局是你于示范中看到底,将ActionName("Delete")性能添加到DeleteConfirmed
方法。那会有效之实施Routing系统的Url映射,这样一个分包/Delete/的 POST
请求的URL 将找到DeleteConfirmed 方法。

其他一个泛的主意,来制止所有同样名称与签字的法门,是人为地改POST
方法,包括不运参数的签。例如,有些开发人士添加参数类型
FormCollectionFormCollection举凡会师传递给
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");

}

ASP.NET MVC 5 –
查询Details和Delete方法

小结

您现在发一个完的 ASP.NET MVC 应用程序并以地点的 DB
数据库被储存数据。您得创制、 读取、 更新、 删除和搜索电影。

爱博体育 2

 

下一步

在公构建与测试一个Web应用程序之后,下同样步就是是将该提供于其旁人,以使得通过互联网访问。要做到就或多或少,你待用其配置至一个Web主机。
如通过微软的free Windows Azure trial
account
,您得安排多上10只Web站点。我提出乃​​下一致步要遵自己之学科Deploy
a Secure ASP.NET MVC app with Membership, OAuth, and SQL Database to a
Windows Azure Web
Site
,以更透通晓咋样布置。另外,还有一个很好之教程是汤姆(Tom)Dykstra’s的中游的Creating an Entity Framework Data Model for an ASP.NET
MVC
Application
.
StackoverflowASP.NET MVC
forums
。不论是本节所介绍的学识,还是Tom Dykstra’s
的中等教程都是为帮大家又好之开展MVC的出,我们在进展开之又也得凭一些开发工具。ComponentOne
Studio ASP.NET
MVC
 是一致迟迟针对
MVC 平台的控件包,它跟 Visual Studio 无缝集成,完全与 MVC6 和 ASP.NET
5.0 兼容,将大幅提升工作功能。

指出问题之好地点:StackOverflow的ASP.NET
MVC的论坛或者GCDN的Web软件开发钻探区。请关注咱俩的博客,这样你即使足以博得最新教程的翻新音信流。

其余意见,欢迎举报。


《ASP.NET MVC 5 入门指南》12篇作品汇总如下:

1. ASP.NET MVC 5 – 开始MVC
5之旅

2. ASP.NET MVC 5 –
控制器

3. ASP.NET MVC 5 –
视图

4. ASP.NET MVC 5 –
将数据从控制器传递让视图

5. ASP.NET MVC 5 –
添加一个模

6. ASP.NET MVC 5 – 成立连接字符串(Connection String)并采取SQL Server
LocalDB

7. ASP.NET MVC 5 –
从控制器访问数据模型

8. ASP.NET MVC 5 – 验证编辑方法(Edit method)和编制视图(Edit
view)

9. ASP.NET MVC 5 –
给电影表和模型加上新字段

10. ASP.NET MVC 5 –
给数据模型添加校验器

11. ASP.NET MVC 5 –
查询Details和Delete方法

12. ASP.NET MVC 5 – 使用Wijmo MVC
5模板1秒钟创立以

 

指望这多少个著作对谢兴趣的意中人有所助,另附上PDF版的会聚文档:

ASP.NET MVC 5
入门指南
》PDF版

 

相关阅读:

微软 Build 2017 开发者大会:Azure 与 AI
的神科帕奇飞

举凡呀叫C#成为最为值得学习的编程语言

从今Visual
Studio看微软20年技术转移

C#开发人员应该了解的13起工作

Visual Studio
2017正经版宣布全纪录

 

每当当时部分课被,接下我们用钻探自动生成的Details和Delete方法。

查询Details和Delete方法

开辟Movie控制器并查阅Details方法。

爱博体育 3

爱博体育 4😉

public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}

爱博体育 5😉

MVC
scaffolding引擎增添了一个诠释表明,在调用的HTTP请求方法中,GET请求有三单URL段,Movies控制器,Details方法与ID值。

Code First
使得您可轻松的应用Find.aspx)方法来索数据。一个重点的安力量内置到了法被。方法首先验证Find艺术已找到了同等总统影片,然后又实践外代码。例如,黑客可以由此转移http://localhost:xxxx/Movies/Details/1http://localhost:xxxx/Movies/Details/12345
(或某些其他值,不意味实际影片的价)从而使链接URL
出现谬误。假诺你没检测是否找到了Movie, null Movie会导致出现数失实。

查看DeleteDeleteConfirmed方法。

爱博体育 6😉

// GET: /Movies/Delete/5

public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

Movie movie = db.Movies.Find(id);

if (movie == null)

{

return HttpNotFound();

}

return View(movie);

}

// POST: /Movies/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

Movie movie = db.Movies.Find(id);

db.Movies.Remove(movie);

db.SaveChanges();

return RedirectToAction("Index");

}

爱博体育 7😉

请注意,DeleteHTTP Get
方法不会师删除指定的电影,它回到去电影之视图,您可在那视图中提交
HttpPost) 删除电影。倘使以GET
请求执行删除操作(或者执行编辑操作,创制操作仍然转移数据的其余此外操作)
开辟了一个安全漏洞。对之的详细音信,请参阅斯蒂芬(Stephen)(Stephen) · 瓦尔特的博客ASP.NET
MVC Tip #46 — Don’t use Delete Links because they create Security
Holes
.

拿去除数据的HttpPost办法命名也唯一签名或称的 DeleteConfirmed
方法。这半独法子的签约如下所示:

爱博体育 8😉

// GET: /Movies/Delete/5

public ActionResult Delete(int? id)

//

// POST: /Movies/Delete/5

[HttpPost, ActionName("Delete")]

public ActionResult DeleteConfirmed(int id)

爱博体育 9😉

国有语言运行时 (CLR)重载方法时,需要艺术有优良唯一的签名
(方法名称一致但不同之参数列表)。但是,在这里你得简单种去方法 — —
一个
GET方法和一个POST方法它们还享有相同之签署。(他们都需要承受一个整数作为参数)。

一经解决这或多或少,可以发生几乎种方法。一是拔取不同之形式名称。这是框架代码在前边的言传身教中所利用的法子。不过,这即带来了一个有点题目:
ASP.NET 将片的
URL按名映射到操作方法,假使你再度命名了智,平时Routing将不可以找到该办法。解决办法是您于演示中视底,将ActionName("Delete")性添加到DeleteConfirmed
方法。这会中的履行Routing系统的Url映射,这样一个含有/Delete/的 POST
请求的URL 将找到DeleteConfirmed 方法。

旁一个广大的法子,来避免所有同等名称以及签署的点子,是人造地转移POST
方法,包括无下参数的署名。例如,有些开发人员添加参数类型
FormCollectionFormCollection是碰头传送给
POST 方法的,然后从不行使此参数:

爱博体育 10😉

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");

}

爱博体育 11😉

小结

公现在出一个完全的 ASP.NET MVC 应用程序并当本地的 DB
数据库中蕴藏数据。您可成立、 读取、 更新、 删除和寻找电影。

爱博体育 12

下一步

以你构建和测试一个Web应用程序之后,下一样步就是是用这提供被其外人,以令通过互联网访问。要就这或多或少,你用以它配备及一个Web主机。
如经微软的free Windows Azure trial
account
,您可安排多上10个Web站点。我指出你​​下同样步要以我之课程Deploy
a Secure ASP.NET MVC app with Membership, OAuth, and SQL Database to a
Windows Azure Web
Site
,以重新透彻摸底怎么布置。另外,还有一个生好之科目是TomDykstra’s的中间的Creating an Entity Framework Data Model for an ASP.NET
MVC
Application
.
StackoverflowASP.NET MVC
forums

提议问题之好地方:StackOverflow的ASP.NET
MVC的论坛或者GCDN的Web软件开发啄磨区。请关注俺们的博客,这样你虽可以拿走最新教程的改进信息流。

别意见,欢迎举报。


《ASP.NET MVC 5 入门指南》12首作品汇总如下:

1. ASP.NET MVC 5 – 开始MVC
5之旅

2. ASP.NET MVC 5 –
控制器

3. ASP.NET MVC 5 –
视图

4. ASP.NET MVC 5 –
将数据从控制器传递给视图

5. ASP.NET MVC 5 –
添加一个模

6. ASP.NET MVC 5 – 创造连接字符串(Connection String)并拔取SQL Server
LocalDB

7. ASP.NET MVC 5 –
从控制器访问数据模型

8. ASP.NET MVC 5 – 验证编辑方法(Edit method)和编制视图(Edit
view)

9. ASP.NET MVC 5 –
给电影表和模型加上新字段

10. ASP.NET MVC 5 –
给数据模型添加校验器

11. ASP.NET MVC 5 –
查询Details和Delete方法

爱博体育,12. ASP.NET MVC 5 – 使用Wijmo MVC
5模板1分钟创设以

 

期待那个随笔对谢兴趣的情人有所助,另附上PDF版的集粤语档:

ASP.NET MVC 5
入门指南
》PDF版