使用webmatrix创建Webservice

时间:2013-12-09 09:14:38

标签: asp.net web-services razor web webmatrix

这次我学习如何使用webmatrix创建webservice。 我尝试从这个链接中学习: http://www.microsoft.com/web/post/creating-a-webservice-with-webmatrix-and-consuming-it-with-a-windows-7-phone-application 但我卡住了因为作者没有采样源代码。 这是我的getproduct.cshtml代码:

@{
    public class Product {
        public string Name {get; set; }
        public int Price {get; set; }
    }

    public static Product GetProducts(string price) {
        var db = Database.Open("WebService");
        var selectQueryString = "SELECT Name, Score FROM Users WHERE Score >= " + @price;
        var data = db.Query(selectQueryString);
        Product product = new Product(); 
        foreach (var row in data) {
            product.Name = @row.Name;
            product.Price = @row.Score;
        } 
        return product; 
    }
}

这是我的jsonRequest.cshtml代码:

@{
    var price = Request.QueryString["price"];
        if (price == null || price == string.Empty) {
            <p>Please enter a Price value</p>
        }  else {
            var product = getproduct.GetProducts(price);
            Json.Write(product, Response.Output);
        }
}

好的,最后我运行http://localhost:55278/jsonRequest.cshtml,但我有两个错误,那就是: 1.该地址没有QueryString,代码只是过去if。 2. getproductGetProduct(价格)中的错误;

  

CS0117:'ASP.getproduct'不包含的定义   'GetProduct'

请帮助我,如何解决我的问题,以便我可以从该链接完成该教程。 谢谢

---UPDATE----
this is my folder 
Test Webservice
|-jsonRequest.cshtml
|-App_Code
   |-getproduct.cshtml

1 个答案:

答案 0 :(得分:3)

我能看到的第一个问题只是区分大小写的一个:

var product = getproduct.GetProduct(price);

应该是:

var product = getProduct.GetProduct(price);

对象名称区分大小写,并且必须与.cshtml文件夹中App_Code文件的名称完全相同。


您似乎已经编辑了您的问题,以证明案例最初是正确的,因此我看到的下一个问题是您的方法名称为复数。您的方法签名是:

public static Product GetProducts(string price)

所以你需要改变:

var product = getproduct.GetProduct(price);

要:

var product = getproduct.GetProducts(price);

getproduct.cshtml中,您需要将块的开头从@{更改为@functions {

我知道你也只是按照教程进行操作,所以这只是一个旁边,但是对于我来说,这个代码看起来绝对成熟。