<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # ASP.NET MVC 5 - 查詢Details和Delete方法 在這部分教程中,接下來我們將討論自動生成的Details和Delete方法。 ## 查詢Details和Delete方法 打開Movie控制器并查看Details方法。 ![](https://box.kancloud.cn/2016-01-02_568736b9ecf56.jpg) ``` 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](http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.find(v=vs.103).aspx)方法來搜索數據。一個重要的安全功能內置到了方法中。方法首先驗證`Find`方法已經找到了一部電影,然后再執行其它代碼。例如,黑客可以通過更改_http://localhost:xxxx/Movies/Details/1_到_http://localhost:xxxx/Movies/Details/12345_ (或某些其它值,不代表實際影片的值)從而使得鏈接URL 出現錯誤。如果您沒有檢測是否找到了Movie, null Movie會導致出現數據錯誤。 查看`Delete`和`DeleteConfirmed`方法。 ``` // 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"); } ``` 請注意,`Delete`的`HTTP Get` 方法不會刪除指定的電影,它返回刪除電影的視圖,您可以在此視圖中提交 (`HttpPost`) 刪除電影。如果使用GET 請求執行刪除操作(或者執行編輯操作,創建操作或者更改數據的任何其它操作) 開辟了一個安全漏洞。對此的詳細信息,請參閱斯蒂芬 · 瓦爾特的博客[ASP.NET MVC Tip #46 — Don't use Delete Links because they create Security Holes](http://stephenwalther.com/blog/archive/2009/01/21/asp.net-mvc-tip-46-ndash-donrsquot-use-delete-links-because.aspx). 將刪除數據的`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](http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection.aspx),[FormCollection](http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection.aspx)是會傳遞給 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 數據庫中存儲數據。您可以創建、 讀取、 更新、 刪除和搜索電影。 ![](https://box.kancloud.cn/2016-01-02_568736ba14623.jpg) ## 下一步 在您構建和測試一個Web應用程序之后,下一步就是將其提供給其他人,以使得通過互聯網訪問。要做到這一點,你需要將它部署到一個Web主機。 如通過微軟的[free Windows Azure trial account](http://www.windowsazure.com/en-us/pricing/free-trial/?WT.mc_id=A443DD604),您可以部署多達10個Web站點。我建議你??下一步請按照我的教程[Deploy a Secure ASP.NET MVC app with Membership, OAuth, and SQL Database to a Windows Azure Web Site](http://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/),以更深入了解如何部署。另外,還有一個很好的教程是Tom Dykstra's的中級的[Creating an Entity Framework Data Model for an ASP.NET MVC Application](http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application). [Stackoverflow](http://stackoverflow.com/help) 和 [ASP.NET MVC forums](http://forums.asp.net/1146.aspx)。 提出問題的好地方:StackOverflow的ASP.NET MVC的論壇或者[GCDN的Web軟件開發討論區](http://gcdn.gcpowertools.com.cn/showforum-27.html)。請關注[我們的博客](http://www.cnblogs.com/powertoolsteam/),這樣你就可以獲得最新教程的更新信息流。 任何意見,歡迎反饋。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看