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

当当下一部分课被,接下我们以讨论自动生成的Details和Delete方法。

查询Details和Delete方法

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

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
请求执行删除操作(或者执行编辑操作,创建操作还是改变数据的旁其它操作)
开辟了一个安全漏洞。对这个之详细信息,请参阅斯蒂芬 · 瓦尔特的博客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
方法,包括无下参数的签约。例如,有些开发人员添加参数类型
FormCollection,FormCollection凡是碰头传递让
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
数据库被存储数据。您可创造、 读取、 更新、 删除和寻找电影。

下一步

以你构建和测试一个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.
Stackoverflow 和 ASP.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业内版发布全纪录

 

相关文章