当前位置: 首页 > news >正文

西安做网站多钱/介绍产品的营销推文

西安做网站多钱,介绍产品的营销推文,自媒体采集网站建设,网站设计背景图片怎么做的我们先来看一个简单的场景&#xff0c;例如我们的blog系统有一个Post的对象&#xff0c;Post对象有一个Tags属性和Categories属性&#xff0c;他们的类型分别是&#xff1a;Post.Tags : StateList<string> (BlogEngine.NET 中的一个List<T>的扩展类型)Post.Categor…

我们先来看一个简单的场景,例如我们的blog系统有一个Post的对象,Post对象有一个Tags属性和Categories属性,他们的类型分别是:

Post.Tags : StateList<string> (BlogEngine.NET 中的一个List<T>的扩展类型)
Post.Categories : StateList<Category>


假如我们要使用UpdataModel方法来对我们Post过来的Form表单数据更新到我们的Post对象中,可能会有如下的代码:

  1. /// <summary>
  2. /// 将提交过来的新随笔表单内容保存到数据库
  3. /// </summary>
  4. [AcceptVerbs("POST"), ActionName("NewPost")]
  5. public ActionResult SaveNewPost(FormCollection form)
  6. {
  7.     Post post = new Post();
  8.     try
  9.     {
  10.         UpdateModel(post, new[] { "Title", "Content", "Slug", "Tags", "Categories" });
  11.     }
  12.     catch
  13.     {
  14.         return View(post);
  15.     } 
  16.     ..
  17. }
复制代码

很明显,在上面的代码中,我们用UpdateModel来更新Tags和Categories属性的时候,是不可能成功的,因为UpdateModel方法不知道怎样将Form提交过来的"Tags"和"Categories"数据转换为StateList<string>类型和StateList<Category>类型。这时候就需要我们提供一个ValueProvider,来进行这个转换。 

要实现一个ValueProvider,我们只需要实现IValueProvider接口的GetValue方法,并且返回一个ValueProviderResult的结果就可以了。下面我们就写一个PostValueProvider来实现上面我们提出的情况。代码如下:

PostValueProvider

  1. public class PostValueProvider : IValueProvider
  2. {
  3.     private ControllerContext context;
  4.     //private DefaultValueProvider dProvider; 
  5.     public PostValueProvider(ControllerContext context)
  6.     {
  7.         this.context = context;
  8.         //dProvider = new DefaultValueProvider(context);
  9.     } 
  10.     #region IValueProvider 成员 
  11.     public ValueProviderResult GetValue(string name)
  12.     {
  13.         if (string.IsNullOrEmpty(name))
  14.         {
  15.             throw new ArgumentException("参数不能为空", "name");
  16.         }
  17.         switch (name)
  18.         {
  19.             case "Tags":
  20.                 return GetTagsValue();
  21.             case "Categories":
  22.                 return GetCategoriesValue();
  23.             default:
  24.                 return new DefaultValueProvider(context).GetValue(name);
  25.         }
  26.     } 
  27.     #endregion 
  28.     private ValueProviderResult GetTagsValue()
  29.     {
  30.         string strTags = GetValueFromRequest("Tags");
  31.         if (string.IsNullOrEmpty(strTags))
  32.         {
  33.             return null;
  34.         } 
  35.         string[] tags = strTags.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
  36.         StateList<string> tagsList = new StateList<string>();
  37.         foreach (string tag in tags)
  38.         {
  39.             tagsList.Add(tag.Trim().ToLowerInvariant());
  40.         } 
  41.         return new ValueProviderResult(tagsList, strTags, CultureInfo.InvariantCulture);
  42.     } 
  43.     private ValueProviderResult GetCategoriesValue()
  44.     {
  45.         string strCategories = GetValueFromRequest("Categories");
  46.         if (string.IsNullOrEmpty(strCategories))
  47.         {
  48.             return null;
  49.         } 
  50.         string[] categories = strCategories.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
  51.         StateList<Category> list = new StateList<Category>();
  52.         foreach (string c in categories)
  53.         {
  54.             list.Add(Category.GetCategory(new Guid(c)));
  55.         } 
  56.         return new ValueProviderResult(list, strCategories, CultureInfo.InvariantCulture);
  57.     } 
  58.     private string GetValueFromRequest(string name)
  59.     {
  60.         string value = null;
  61.         HttpRequestBase request = context.HttpContext.Request;
  62.         if (request != null)
  63.         {
  64.             if (request.QueryString != null)
  65.             {
  66.                 value = request.QueryString[name];
  67.             }
  68.             if (string.IsNullOrEmpty(value) && (request.Form != null))
  69.             {
  70.                 value = request.Form[name];
  71.             }
  72.         } 
  73.         return value;
  74.     }
  75. }
复制代码

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

  1. /// <summary>
  2. /// 将提交过来的新随笔表单内容保存到数据库
  3. /// </summary>
  4. [AcceptVerbs("POST"), ActionName("NewPost")]
  5. public ActionResult SaveNewPost(FormCollection form)
  6. {
  7.     Post post = new Post();
  8.     try
  9.     {
  10.         UpdateModel(post, new[] { "Title", "Content", "Slug", "Tags", "Categories" }, new PostValueProvider(ControllerContext));
  11.     }
  12.     catch
  13.     {
  14.         return View(post);
  15.     } 
  16.   ..
  17. }
复制代码

转载于:https://www.cnblogs.com/death029/archive/2012/02/09/2343630.html

http://www.jmfq.cn/news/4970449.html

相关文章:

  • 网络违法犯罪网站举报/seo效果分析
  • 广州佛山最新疫情/武汉seo优化顾问
  • 郑州网站制作怎么样/网站友链查询接口
  • 免费网站建设排行/swot分析
  • 长沙第三方网站建设公司/网络广告的计费方式
  • 欧派整装大家居装修公司加盟/厦门seo管理
  • 网站建设与维护工作/今天国际新闻大事
  • 专门做母婴的网站有哪些/搜狗推广效果好吗
  • 深圳网站建设营销服务平台/网站怎么做推广
  • 精准扶贫网站建设的意义/网络营销服务商有哪些
  • 河南郑州网站建设/网络营销与策划实践报告
  • 哪些网站可以做调查问卷/百度推广联系人
  • 做独立网站需要软件吗/淘宝数据分析
  • 郴州做网站的/营销管理培训课程
  • 家乡网站设计模板/百度seo优化推广公司
  • 茶山网站建设公司/营销网络推广
  • 旅游网站建设成都/杭州网站seo公司
  • 云主机服务器/深圳企业seo
  • wordpress 国内加速/哈尔滨网络优化推广公司
  • 嘉兴微信网站建设/专业网页设计和网站制作公司
  • 大连的网站设计公司/北京做的好的seo公司
  • 申请网站建设的请示/教你如何快速建站
  • 桂林北京网站建设/推广代理公司
  • 现在建网站/品牌营销案例
  • 护肤品 网站建设策划书/seo蜘蛛池
  • 怎么自己做彩票网站/seo代码优化工具
  • 长春seo网站建设费用/技能培训
  • 小说网站开发的看书软件/seo值是什么意思
  • 网站流量如何盈利/天津百度推广电话号码
  • 承德市网站开发/磁力宝最佳搜索引擎入口