91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC中如何使用UpdataModel方法

發布時間:2021-07-15 09:43:18 來源:億速云 閱讀:153 作者:chen 欄目:編程語言

本篇內容主要講解“ASP.NET MVC中如何使用UpdataModel方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“ASP.NET MVC中如何使用UpdataModel方法”吧!

ASP.NET MVC Beta版中,在UpdataModel方法中提供了一個帶有IValueProvider參數的重載。那么這個IValueProvider有什么用呢?

我們先來看一個簡單的場景,例如我們的blog系統有一個Post的對象,Post對象有一個Tags屬性和Categories屬性,他們的類型分別是:

Post.Tags : StateList<string> (BlogEngine.NET 中的一個List<T>的擴展類型)  Post.Categories : StateList<Category>


假如我們要在ASP.NET MVC中使用UpdataModel方法來對我們Post過來的Form表單數據更新到我們的Post對象中,可能會有如下的代碼:

/// <summary> /// 將提交過來的新隨筆表單內容保存到數據庫  /// </summary> [AcceptVerbs("POST"), ActionName("NewPost")]  public ActionResult SaveNewPost(FormCollection form)  {      Post post = new Post();      try      {  UpdateModel(post, new[] { "Title", "Content", "Slug", "Tags", "Categories" });      }      catch      {          return View(post);      }      ..  }

很明顯,在上面的代碼中,我們使用UpdateModel來更新Tags和Categories屬性的時候,是不可能成功的,因為UpdateModel方法不知道怎樣將Form提交過來的"Tags"和"Categories"數據轉換為StateList<string>類型和 StateList<Category>類型。這時候就需要我們提供一個ValueProvider,來進行這個轉換。

要實現一個ValueProvider,我們只需要實現IValueProvider接口的GetValue方法,并且返回一個 ValueProviderResult的結果就可以了。下面我們就寫一個PostValueProvider來實現上面我們提出的情況。代碼如下:

  1. PostValueProvider  

  2. publicclassPostValueProvider:IValueProvider  

  3. {  

  4. privateControllerContextcontext;  

  5. //privateDefaultValueProviderdProvider;  

  6.  

  7. publicPostValueProvider(ControllerContextcontext)  

  8. {  

  9. this.context=context;  

  10. //dProvider=newDefaultValueProvider(context);  

  11. }  

  12.  

  13. #regionIValueProvider成員  

  14.  

  15. publicValueProviderResultGetValue(stringname)  

  16. {  

  17. if(string.IsNullOrEmpty(name))  

  18. {  

  19. thrownewArgumentException("參數不能為空","name");  

  20. }  

  21. switch(name)  

  22. {  

  23. case"Tags":  

  24. returnGetTagsValue();  

  25. case"Categories":  

  26. returnGetCategoriesValue();  

  27. default:  

  28. returnnewDefaultValueProvider(context).GetValue(name);  

  29. }  

  30. }  

  31.  

  32. #endregion  

  33.  

  34. privateValueProviderResultGetTagsValue()  

  35. {  

  36. stringstrTags=GetValueFromRequest("Tags");  

  37. if(string.IsNullOrEmpty(strTags))  

  38. {  

  39. returnnull;  

  40. }  

  41.  

  42. string[]tags=strTags.Split(newstring[]{","},StringSplitOptions.
    RemoveEmptyEntries);  

  43. StateList<string>tagsList=newStateList<string>();  

  44. foreach(stringtagintags)  

  45. {  

  46. tagsList.Add(tag.Trim().ToLowerInvariant());  

  47. }  

  48.  

  49. returnnewValueProviderResult(tagsList,strTags,CultureInfo.
    InvariantCulture);  

  50. }  

  51.  

  52. privateValueProviderResultGetCategoriesValue()  

  53. {  

  54. stringstrCategories=GetValueFromRequest("Categories");  

  55. if(string.IsNullOrEmpty(strCategories))  

  56. {  

  57. returnnull;  

  58. }  

  59.  

  60. string[]categories=strCategories.Split(newstring[]{","},
    StringSplitOptions.RemoveEmptyEntries);  

  61. StateList<Category>list=newStateList<Category>();  

  62. foreach(stringcincategories)  

  63. {  

  64. list.Add(Category.GetCategory(newGuid(c)));  

  65. }  

  66.  

  67. returnnewValueProviderResult(list,strCategories,CultureInfo.InvariantCulture);  

  68. }  

  69.  

  70. privatestringGetValueFromRequest(stringname)  

  71. {  

  72. stringvalue=null;  

  73. HttpRequestBaserequest=context.HttpContext.Request;  

  74. if(request!=null)  

  75. {  

  76. if(request.QueryString!=null)  

  77. {  

  78. value=request.QueryString[name];  

  79. }  

  80. if(string.IsNullOrEmpty(value)&&(request.Form!=null))  

  81. {  

  82. value=request.Form[name];  

  83. }  

  84. }  

  85.  

  86. returnvalue;  

  87. }  

然后我們就可以在UpdateModel方法中使用我們的PostValueProvider了:

  1. ///<summary> 

  2. ///將提交過來的新隨筆表單內容保存到數據庫  

  3. ///</summary> 

  4. [AcceptVerbs("POST"),ActionName("NewPost")]  

  5. publicActionResultSaveNewPost(FormCollectionform)  

  6. {  

  7. Postpost=newPost();  

  8. try  

  9. {  

  10. UpdateModel(post,new[]{"Title","Content","Slug","Tags","Categories"},
    newPostValueProvider(ControllerContext));  

  11. }  

  12. catch  

  13. {  

  14. returnView(post);  

  15. }  

  16.  

  17. ..  

到此,相信大家對“ASP.NET MVC中如何使用UpdataModel方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长沙县| 资讯| 浠水县| 上栗县| 伊吾县| 漳平市| 普宁市| 色达县| 荣昌县| 梁山县| 永川市| 长汀县| 九龙城区| 盐山县| 平乡县| 武安市| 连南| 双牌县| 利津县| 富平县| 大石桥市| 杂多县| 维西| 黎城县| 毕节市| 鞍山市| 庆云县| 昭通市| 绩溪县| 句容市| 徐州市| 修武县| 阿拉善左旗| 右玉县| 沁水县| 涟水县| 广德县| 抚松县| 彩票| 宁城县| 贵定县|