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

在那部分学科中,接下去大家将研商自动生成的Details和Delete方法。

查询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 应用程序并在本土的 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
,以更深入摸底怎么布置。其它,还有一个很好的科目是TomDykstra’s的中档的Creating an Entity Framework Data Model for an ASP.NET
MVC
Application
.
StackoverflowASP.NET MVC
forums
。不论是本节所介绍的学问,依旧汤姆 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专业版揭橥全纪录

 

相关文章