私はこれが何を意味しているのかを知っており、GoogleとMSDNを検索しました。しかし、それ以外はどうすればこの問題を回避できますか?コンテキスト変数 'var'はローカル変数宣言内にのみ表示される可能性があります
(WebMatrixを使用して)App_Codeフォルダ内のカミソリコードに機能があり、データベースから情報を取得して計算を行った後、データベースを新しい合計で更新します。
しかし、私に変数を渡す方法は、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;
}
そして、(App_Codeフォルダー内)Base.cs:
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);
}
}
}
を私は」それがうまくいくかどうかを調べるためにいくつかのことを試しましたが、そうではありません。私は明らかにそれを間違っているが、これは私がデスクトップアプリケーションでそれをやっているところなのだが、なぜWebページでこれが違うのだろうと思っているのだろう。
ありがとうございました!
備考として:Prepared/Parameterizedステートメントはあなたの友人です。本当に良い理由がない限り、文字列連結によるクエリを作成しないでください。 – CodesInChaos