上下文关键字'var'可能只出现在局部变量声明问题中

ben*_*ndr 7 .net c# webmatrix

我知道这意味着什么,我搜索了Google和MSDN.但是,我怎么能绕过这个呢?

我在App_Code文件夹中的razor代码中有一个函数(使用WebMatrix),我从数据库中获取信息,进行一些计算,然后用新的总数更新数据库.

但是,如果它不允许我将变量传递给App_Code文件夹中的方法?

这是我得到的:

EditQuantity.cshtml(根文件夹):

        try
        {
            Base baseClass;
            baseClass.CalculateTotalPriceInCart(Request.QueryString["PartNumber"], Request.QueryString["Description"], Session["OSFOID"], true);

            Response.Redirect("~/Cart.cshtml");
        }
        catch(Exception exmes)
        {
            message = exmes;
        }
Run Code Online (Sandbox Code Playgroud)

并且,Base.cs(在App_Code文件夹中):

using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using WebMatrix.Data;

/// <summary>
/// Summary description for ClassName
/// </summary>
public class Base
{   
    public void CalculateTotalPriceInCart(var PartNumber, var Description, var OrderId, bool IsBoxed)
    {
        var database = Database.Open("OSF");
        var query = "";
        var result = "";
        decimal price = 0.00M;

        if(IsBoxed)
        {
            // Select item.
            query = "SELECT Boxes, BoxPrice FROM Cart WHERE OrderId = '" + OrderId + "' AND PartNumber = '" + PartNumber + "' AND Description = '" + Description + "' AND IsBoxed = 1";
            result = database.Query(query);

            // Recalculate Price.
            foreach(var item in result)
            {
                price = result.Boxes * result.BoxPrice;
            }

            // Update item.
            query = "UPDATE Cart SET BoxPrice = '" + price + "' WHERE OrderId = '" + OrderId + "' AND PartNumber = '" + PartNumber + "' AND Description = '" + Description + "' AND IsBoxed = 1";
            database.Execute(query);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一些事情,看看它是否有效,但不是.我显然做错了,但这就是我在桌面应用程序中的表现方式,我不明白为什么WebPages会有所不同,以及我这样做会怎么样?

谢谢!

Amy*_*Amy 5

您无法使用var关键字定义方法参数,因为编译器无法在编译时确定方法签名.

public void CalculateTotalPriceInCart(
         string Description, 
         string PartNumber, 
         string OrderId, 
         bool IsBoxed)
Run Code Online (Sandbox Code Playgroud)

在另一个评论中,你说它无法投射IEnumerable<dynamic>string.所以正确声明参数!我不知道它是哪一个.

public void CalculateTotalPriceInCart(
         IEnumerable<dynamic> Description, // for example
         string PartNumber, 
         string OrderId, 
         bool IsBoxed)
Run Code Online (Sandbox Code Playgroud)

  • 看看我的更新,Jase.我无法知道你的论点是什么类型.您需要查看您要传递的内容. (3认同)