none
【ASP.NET】根据条件判断页面控件是否有值执行不同操作 RRS feed

  • 问题

  • 有一个问题需要请教各位高手,如图所示:

     

    如图中有分三种规格图片大小的宽与高输入框;目前所遇到的问题是:这里存在三种情况 一、所有输入框都不填写;  二、同一种图片规格全部填写;   三、同一种图片只填写了一个;

    三种情况用三种不同的方法去处理。问题的难度是这三种情况再加上三种不同的图片用判断不好处理。我目前想到的是利用for循环判断页面控件 如果满足条件再进行处理;

    代码写到最后没有头绪了:请高手帮我看看,小弟不胜感激

     

                            foreach (string ctl in Page.Request.Form)
                            {
                                Control c = Page.FindControl(ctl);
                                string[] conArr={"bigH","bigW","medH","medW","SmaH","SmaW"};//六个控件的id
                                if (c is System.Web.UI.HtmlControls.HtmlInputText)
                                {
                                    if(c.ID)
                                }
                            }


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    • 已移动 Paul Zhou 2011年5月11日 10:00 ASP.NET (发件人:.NET Framework 一般性问题讨论区)
    • 已编辑 jinwb1982 2011年5月16日 14:44
    2011年5月10日 3:02

答案

  • 你好,可以创建一个类里。每个类中有width和height,那么大图、中图、小图就是3个实例。

    写一个方法,判断width和height是否符合要求,符合的话返回True,否则False

    再写一个方法,处理水印。

    那么实际上只要处理3次就可以了。


    A marked answer is appreciated.

    我是利用以下方法解决的,虽然不太精炼,但也:

                            string weight = string.Empty, height = string.Empty;
                            string mode = string.Empty;//剪切模式
                            string itype = string.Empty; ;//图片种类


                            ArrayList conArr = new ArrayList();//存放控件的数组
                            foreach (string ctl in Page.Request.Form)
                            {
                                Control c = Page.FindControl(ctl);
                                if (c is System.Web.UI.HtmlControls.HtmlInputText)
                                {
                                    conArr.Add(ctl);
                                }
                            }

                            for (int i = 0; i < conArr.Count; )
                            {
                                if (i >= 0 && i / 2 <= 1)
                                    itype = "bigimg";
                                if (i >= 2 && i <= 3)
                                    itype = "medimg";
                                if (i >= 4 && i <= 5)
                                    itype = "smaimg";

                                if (((HtmlInputText)Page.FindControl((string)conArr[i])).Value != "" && ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value != "")
                                {
                                    mode = "cut";//指定高宽裁减
                                    weight = ((HtmlInputText)Page.FindControl((string)conArr[i])).Value;
                                    height = ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value;   //i % 2 == 0 ? (string)conArr[i - 2] : (string)conArr[i]

                                }
                                else
                                {
                                    if (((HtmlInputText)Page.FindControl((string)conArr[i])).Value != "" && ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value == "")  //(i % 2 == 0)
                                    {
                                        mode = "w";//宽度剪切
                                        weight = ((HtmlInputText)Page.FindControl((string)conArr[i])).Value;
                                        height = "";
                                    }
                                    else if (((HtmlInputText)Page.FindControl((string)conArr[i])).Value == "" && ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value != "")  //(i % 2 == 1)
                                    {
                                        mode = "h";//高度剪切
                                        height = ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value;
                                        weight = "";
                                    }
                                    else //默认不填
                                    {
                                        mode = "hw";//高度剪切
                                        height = "200";
                                        weight = "300";
                                    }
                                }

                                i = i + 2;
                                AddImg(this.file.PostedFile, weight, height, itype, mode, extension,fname);
                            }

     

     


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    • 已标记为答案 jinwb1982 2011年5月14日 2:57
    2011年5月14日 2:57

全部回复

  • 你好!

    用 Linq 做起来会更方便

    public class UploadImageItem
    {
      public UploadImageSpec Spec { get; set; }
      public int Width { get; set; }
      public int Height { get; set; }
    }
    
    public static void Test()
    {
      var obj = new List<UploadImageItem>();
    
      // 将三个图的实现参数添加到集合中,若为 0 表示未填
      obj.Add(new UploadImageItem());
      obj.Add(new UploadImageItem());
      obj.Add(new UploadImageItem());
    
      // 都没写
      var ret1 = obj.Any(item =>
        item.Width == 0 &&
        item.Height == 0);
    
      // 有且至少有一种图片填了 Width 和 Height
      var ret2 = obj.Any(item =>
        item.Width > 0 &&
        item.Height > 0);
    
      // 全部都写了
      var ret3 = obj.Count(item =>
        item.Width > 0 &&
        item.Height > 0) == 3;
    
      // 有且至少有一种图片只填了 Width 或 Height
      var ret4 = obj.Any(item =>
        (item.Width > 0 && item.Height == 0) &&
        (item.Width == 0 && item.Height > 0));
    
      // .......
    }
    


    知识改变命运,奋斗成就人生!
    2011年5月10日 5:11
    版主
  • 你好!

    用 Linq 做起来会更方便

    public class UploadImageItem
    {
     public UploadImageSpec Spec { get; set; }
     public int Width { get; set; }
     public int Height { get; set; }
    }
    
    public static void Test()
    {
     var obj = new List<UploadImageItem>();
    
     // 将三个图的实现参数添加到集合中,若为 0 表示未填
     obj.Add(new UploadImageItem());
     obj.Add(new UploadImageItem());
     obj.Add(new UploadImageItem());
    
     // 都没写
     var ret1 = obj.Any(item =>
      item.Width == 0 &&
      item.Height == 0);
    
     // 有且至少有一种图片填了 Width 和 Height
     var ret2 = obj.Any(item =>
      item.Width > 0 &&
      item.Height > 0);
    
     // 全部都写了
     var ret3 = obj.Count(item =>
      item.Width > 0 &&
      item.Height > 0) == 3;
    
     // 有且至少有一种图片只填了 Width 或 Height
     var ret4 = obj.Any(item =>
      (item.Width > 0 && item.Height == 0) &&
      (item.Width == 0 && item.Height > 0));
    
     // .......
    }
    

     


    知识改变命运,奋斗成就人生!

    你好 我现在就是用一种方法判断页面上的控件,同时还判断每个控件的参数  没有头绪用什么方法来判断

    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年5月10日 5:49
  • 上面给你的方法有什么问题吗?
    知识改变命运,奋斗成就人生!
    2011年5月10日 6:27
    版主
  • 上面给你的方法有什么问题吗?
    知识改变命运,奋斗成就人生!

    不好意思 我不会Linq 呵呵,想用C#。net解决这个问题

    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年5月10日 6:29
  • 你好,可以创建一个类里。每个类中有width和height,那么大图、中图、小图就是3个实例。

    写一个方法,判断width和height是否符合要求,符合的话返回True,否则False

    再写一个方法,处理水印。

    那么实际上只要处理3次就可以了。


    A marked answer is appreciated.
    2011年5月12日 6:51
    版主
  • 你好,可以创建一个类里。每个类中有width和height,那么大图、中图、小图就是3个实例。

    写一个方法,判断width和height是否符合要求,符合的话返回True,否则False

    再写一个方法,处理水印。

    那么实际上只要处理3次就可以了。


    A marked answer is appreciated.

    我是利用以下方法解决的,虽然不太精炼,但也:

                            string weight = string.Empty, height = string.Empty;
                            string mode = string.Empty;//剪切模式
                            string itype = string.Empty; ;//图片种类


                            ArrayList conArr = new ArrayList();//存放控件的数组
                            foreach (string ctl in Page.Request.Form)
                            {
                                Control c = Page.FindControl(ctl);
                                if (c is System.Web.UI.HtmlControls.HtmlInputText)
                                {
                                    conArr.Add(ctl);
                                }
                            }

                            for (int i = 0; i < conArr.Count; )
                            {
                                if (i >= 0 && i / 2 <= 1)
                                    itype = "bigimg";
                                if (i >= 2 && i <= 3)
                                    itype = "medimg";
                                if (i >= 4 && i <= 5)
                                    itype = "smaimg";

                                if (((HtmlInputText)Page.FindControl((string)conArr[i])).Value != "" && ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value != "")
                                {
                                    mode = "cut";//指定高宽裁减
                                    weight = ((HtmlInputText)Page.FindControl((string)conArr[i])).Value;
                                    height = ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value;   //i % 2 == 0 ? (string)conArr[i - 2] : (string)conArr[i]

                                }
                                else
                                {
                                    if (((HtmlInputText)Page.FindControl((string)conArr[i])).Value != "" && ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value == "")  //(i % 2 == 0)
                                    {
                                        mode = "w";//宽度剪切
                                        weight = ((HtmlInputText)Page.FindControl((string)conArr[i])).Value;
                                        height = "";
                                    }
                                    else if (((HtmlInputText)Page.FindControl((string)conArr[i])).Value == "" && ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value != "")  //(i % 2 == 1)
                                    {
                                        mode = "h";//高度剪切
                                        height = ((HtmlInputText)Page.FindControl((string)conArr[i + 1])).Value;
                                        weight = "";
                                    }
                                    else //默认不填
                                    {
                                        mode = "hw";//高度剪切
                                        height = "200";
                                        weight = "300";
                                    }
                                }

                                i = i + 2;
                                AddImg(this.file.PostedFile, weight, height, itype, mode, extension,fname);
                            }

     

     


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    • 已标记为答案 jinwb1982 2011年5月14日 2:57
    2011年5月14日 2:57