欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

MVC 5 - 查詢Details和Delete方法

系統 2349 0

MVC 5 - 查詢Details和Delete方法

在這部分教程中,接下來我們將討論自動生成的Details和Delete方法。

查詢Details和Delete方法

打開Movie控制器并查看Details方法。

clip_image002

      
        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 方法來搜索數據。一個重要的安全功能內置到了方法中。方法首先驗證 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 .

將刪除數據的 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 數據庫中存儲數據。您可以創建、 讀取、 更新、 刪除和搜索電影。

clip_image004

下一步

在您構建和測試一個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

提出問題的好地方:StackOverflow的ASP.NET MVC的論壇或者 GCDN的Web軟件開發討論區 。請關注 我們的博客 ,這樣你就可以獲得最新教程的更新信息流。

任何意見,歡迎反饋。

?
?
分類:? Web技術

MVC 5 - 查詢Details和Delete方法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99热这里只有免费国产精品 | 免费毛片看 | 婷婷色综合久久五月亚洲 | 日本视频一区在线观看免费 | 亚洲一区二区在线 | 成人免费一级毛片在线播放视频 | 午夜影院免费视频 | 91网址 | 极品一级片 | 99热在线播放 | 奇米影视77 | 99热官网 | 亚洲精品乱码久久久久久9色 | 福利视频在线免费观看 | 亚洲一区中文字幕在线观看 | 五月天国产视频 | 天天操夜夜做 | 国产在线毛片 | 99re国产 | 牛牛a级毛片在线播放 | 黄视频免费在线观看 | 日韩精品在线视频 | 人人99| 日本va视频| 国产99久久精品一区二区永久免费 | 天堂在线免费视频 | 欧美电影免费观看 | 国产成人视屏 | 亚洲午夜成激人情在线影院 | 久久精品天堂 | 久久一本精品 | 97成人精品 | 婷婷草 | 精品欧美成人高清视频在线观看 | 一级做一级爱a做片性视频视频 | 色综合久久98天天综合 | 日韩视频在线精品视频免费观看 | 久久www免费人成精品 | 久久免费看少妇高潮A片JA小说 | 天天弄天天干 | 国产精品久久久久久久y |