2012-03-12 55 views
0

我正在关注this教程,以便从SQL Server中以用户类型创建动态搜索结果。它告诉我创建一个.asmx文件,它不是我以前使用过的格式。下面是代码我迄今:无法按照教程创建动态搜索结果

WebService.asmx.cs:

public class SearchService : WebService 
{ 
    [WebMethod] 
    public searchResult[] Search(string txtSearch) 
    { 
//Declare collection of searchResult 
     List resultList = new List(); 
     var db = Database.Open("mPlan"); 
     var result = db.Query("SELECT * from Users where Username like '%" + txtSearch + "%'"); 
     try 
     { 
      foreach(var record in result) 
      { 
       searchResult result = new searchResult(); 
       result.Username = ["Username"].ToString(); 
       resultList.Add(result); 
      } 
      return resultList.ToArray(); 
     } 
     catch 
     { 
      return null; 
     } 
    }} 

WebService.asmx:

<%@ WebService Language="C#" class="WebService.asmx.cs" %> 
using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.Services; 
using System.Data.SqlClient; 

[System.Web.Script.Services.ScriptService] 
[System.Web.Script.Services.GenerateScriptType(typeof(searchResult))] 
public class searchResult 
{ 
    public string Title; 
    public string img; 
    public string href; 
} 

这里是我的错误信息,任何人都可以帮我这个请?

编译器错误信息: BC30689:语句不能出现 之外的方法体

+0

那么,这两行意味着什么呢?他们什么时候打算执行? – 2012-03-12 13:28:09

+0

您错过了'namespace'声明 – Paddy 2012-03-12 13:29:35

+0

稍微偏离了主题,但您应该尝试并防止SQL注入,请查看以下链接:http://www.codinghorror.com/blog/2005/04/give-me- parameterized-sql-or-give-me-death.html – Matthew 2012-03-12 13:31:56

回答

0

您的Web方法必须在类中声明,并且属性必须是装饰类。

[System.Web.Script.Services.ScriptService] 
[System.Web.Script.Services.GenerateScriptType(typeof(searchResult))] 
public class SearchService : WebService 
{ 
    [WebMethod] 
    public searchResult[] Search(string txtSearch) 
    { 
    // ... 
    } 
} 
+0

我现在更新了我的代码以反映您的更改,但是当我尝试运行它时仍然返回相同的错误。有任何想法吗? – 2012-03-12 13:35:11

+0

导致错误的线上有哪些代码? – jrummell 2012-03-12 13:42:56

+0

编译器错误消息:BC30689:语句不能出现在方法主体/多行lambda之外。 第2行:使用系统; – 2012-03-12 13:48:12