none
字符串问题 RRS feed

  • 问题

  • string[] RexStr = new string[3] { "\\$pagetitle\\$", "\\$keywords\\$", "\\$description\\$" };
    string[] RtnStr = new string[3] { "Title", "Keyword", "Description" };


    for (int k = 0; k < RexStr.Length; k++)
    {
      Regex MyRegex1 = new Regex(RexStr[k], RegexOptions.IgnoreCase);
      if (MyRegex1.IsMatch(GetHtml))
      {
      GetHtml = MyRegex1.Replace(GetHtml.ToString(), model.RtnStr[k].ToString());
      }
    }

    错误 2 “jm.Model.News”并不包含“RtnStr”的定义

    如何才能使RtnStr[k]成为一个整体,调用model.Title,model.keyword,model.Description的值
    2010年7月30日 1:27

答案

  • 哦,这样啊,反射呗。。。

            public string GetAttribute(object obj, string attributeName)
            {
                Type type = obj.GetType();
                PropertyInfo info = type.GetProperty(attributeName);
                if (info != null)
                    return info.GetValue(obj, null).ToString();
                else
                    return "property not found";
            }

      GetHtml = MyRegex1.Replace(GetHtml.ToString(), GetAttribute(model,RtnStr[k]); // model.RtnStr[k].ToString());

    2010年7月30日 8:02

全部回复

  • model =??

    RtnStr可以定义成枚举嘛。。

    2010年7月30日 5:14
  • 一般这种问题需要 xml +tt模板解决

     

    使用T4为数据库自动生成实体类(C#) - .NET技术- ITPUB个人空间 ...

    2009年7月20日 ... 使用T4为数据库自动生成实体类(C#)2009-07-19 18:23 by 心

    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年7月30日 6:36
    版主
  • model =??

    RtnStr可以定义成枚举嘛。。


    model是一条新闻记录,比如说model.Title="新闻标题"

    model.Keyword="新闻关键词"

    model.Description="新闻描述"

    我就是想把页面上的$pagetitle$等等这些标签替换成model读出来的标题或关键词信息,定义成枚举怎么做?

    2010年7月30日 7:39
  • 一般这种问题需要 xml +tt模板解决

     

    使用T4为数据库自动生成实体类(C#) - .NET技术- ITPUB个人空间 ...

    2009年7月20日 ... 使用T4为数据库自动生成实体类(C#)2009-07-19 18:23 by 心

    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    我之前用的是datatable读出来的,然后用dr["" + RtnStr[k] + ""].ToString()这样就能替换了,现在改成用model来读的时候,才出现这个问题
    2010年7月30日 7:42
  • 哦,这样啊,反射呗。。。

            public string GetAttribute(object obj, string attributeName)
            {
                Type type = obj.GetType();
                PropertyInfo info = type.GetProperty(attributeName);
                if (info != null)
                    return info.GetValue(obj, null).ToString();
                else
                    return "property not found";
            }

      GetHtml = MyRegex1.Replace(GetHtml.ToString(), GetAttribute(model,RtnStr[k]); // model.RtnStr[k].ToString());

    2010年7月30日 8:02
  • 哦,这样啊,反射呗。。。

            public string GetAttribute(object obj, string attributeName)
            {
                Type type = obj.GetType();
                PropertyInfo info = type.GetProperty(attributeName);
                if (info != null)
                    return info.GetValue(obj, null).ToString();
                else
                    return "property not found";
            }

      GetHtml = MyRegex1.Replace(GetHtml.ToString(), GetAttribute(model,RtnStr[k]); // model.RtnStr[k].ToString());


    这样做的原理是什么啊,起什么作用的,呵呵,不太明白?
    2010年7月30日 8:17
  • 根据名称获取某个对象的属性值。 你试图用一个变量直接访问对象的属性是不行的了。

     编译器不认识,所以只能通过反射的方式获取对象属性的值。

     

    2010年7月30日 8:23
  • 根据名称获取某个对象的属性值。 你试图用一个变量直接访问对象的属性是不行的了。

     编译器不认识,所以只能通过反射的方式获取对象属性的值。

     


    哦,谢谢,那我想知道为什么用dr["" + RtnStr[k] + ""].ToString()这样去访问又是可以的?
    2010年7月30日 8:32
  • DataRow 有索引器啊。。。 你的那个model实现索引器的话也可以通过索引方式访问它的集合属性中的某个值。 至于怎么弄,翻翻msdn吧。。

    2010年7月30日 8:44
  • DataRow 有索引器啊。。。 你的那个model实现索引器的话也可以通过索引方式访问它的集合属性中的某个值。 至于怎么弄,翻翻msdn吧。。

    嗯,谢谢了
    2010年7月30日 8:55