2016-07-15 186 views
0
  1. 此代码是不行的过滤器使用参数

    public HttpResponseMessage Get(string par) 
    { 
        String JsonData, JsonFromXML; 
        XElement root = XElement.Load("http://www.mywebsite.com/mapdata_xml.xml"); 
        IEnumerable<XElement> address = 
         from el in root.Elements("marker") 
         where (string) el.Attribute("province") == par 
         orderby (string)el.Attribute("name") 
         select el; 
    
    
        var XMLData = ""; 
        foreach (XElement el in address) 
         XMLData = XMLData + el; 
        //XMLData = "<markers>" + XMLData + "</markers>"; 
    
    
        XmlDocument xd = new XmlDocument(); 
        xd.LoadXml("<markers>" + XMLData + "</markers>"); 
    
        JsonFromXML = JsonConvert.SerializeXmlNode(xd); 
    
        JsonFromXML = JsonFromXML.Remove(0, 11); 
        JsonFromXML = JsonFromXML.Substring(0, JsonFromXML.Length - 1); 
        JsonData = JsonFromXML.Replace("\"@", "\""); 
    
        return new HttpResponseMessage() 
        { 
         Content = new StringContent(JsonData) 
        }; 
    } 
    

的Web API:http://localhost:55607/api/Test?par=%22Pursat%22

参数:PAR

问题:我有一个Web API(http://localhost:55607/api/Test?par=%22Pursat%22)。我想将参数“Pursat”传递给ASP.Net(public HttpResponseMessage Get(string par)name“Par”)。然后我什么也得不到。然而,当我像这样使用(where(string)el.Attribute(“province”)==“Pursat”)时,我可以从我的代码中获取数据。

  • 此代码工作以及

    public HttpResponseMessage Get(string par) 
    { 
        String JsonData, JsonFromXML; 
        XElement root = XElement.Load("http://www.mywebsite.com/mapdata_xml.xml"); 
        IEnumerable<XElement> address = 
         from el in root.Elements("marker") 
         where (string) el.Attribute("province") == "Pursat" 
         orderby (string)el.Attribute("name") 
         select el; 
    
    
        var XMLData = ""; 
        foreach (XElement el in address) 
         XMLData = XMLData + el; 
        //XMLData = "<markers>" + XMLData + "</markers>"; 
    
    
        XmlDocument xd = new XmlDocument(); 
        xd.LoadXml("<markers>" + XMLData + "</markers>"); 
    
        JsonFromXML = JsonConvert.SerializeXmlNode(xd); 
    
        JsonFromXML = JsonFromXML.Remove(0, 11); 
        JsonFromXML = JsonFromXML.Substring(0, JsonFromXML.Length - 1); 
        JsonData = JsonFromXML.Replace("\"@", "\""); 
    
        return new HttpResponseMessage() 
        { 
         Content = new StringContent(JsonData) 
        }; 
    } 
    
  • 我想要通过使用参数 “相提并论”,而不是固定的数据 “菩萨” 查询数据。

    你知道如何解决这个问题吗? 。

    回答

    0

    它看起来就像你在用双引号(%22 =“在HTML编码)传递的值,所以在现实中,发生的事情是,在您的查询的地方是这样的:

    where (string) el.Attribute("province") == ""Pursat"" 
    

    而如果你把它称为是这样的:

    http://localhost:55607/api/Test?par=Pursat 
    

    您的where子句应该是这样的:

    where (string) el.Attribute("province") == "Pursat"