Visual Studio ile çalışıyorum ve bir .CSHTML web sayfası yapıyorum. Kod, kod çalışıyordu. Bilinmeyen bir düzenleme ile mi? veya hata? (olası) Visual studio, son {} setini tanımayacaktır. {Burada C# koduVisual Studio C# kapanış parantezlerini belirleme
} @ ile başlayan olanları
Derleyici Hata: "Ayrıştırıcı hata iletisi: Kod bloğu kapanış eksik ''. Karakter Eğer eşleşen bir olduğundan emin olun"}} "Herkes için karakter '{' Bu blok içinde karakterler ve hiçbirinin '}' karakterleri biçimlendirme olarak yorumlanır ediliyor
Kaynak hatası:.
Satır 2:
Hat 3:
Satır 4: @ { Satır 5: var db = Veritabanı.Open ("DevDbCS"); Hat 6:..
"
Ben kopyası var ve birini seçerseniz, ilgili ayraç vurgular not defteri ++ için kodumu yapıştırılan ben, tüm frenler açılış ve kapanış doğru ben bile İşleme içine düştüğünü doğruladı (alışkanlık derleme) ama çok tüm iyi diyor.
@{
var db = Database.Open("DevDbCS");
var selectThorneID = "SELECT ThorneID, Status FROM Batch_Record WHERE Status = 'ACTIVE' ORDER BY ThorneID ASC";
//Variables
var ThorneID = " ";
var frmInsertV = "";
var frmInsert = "";
var frmUpdate = "";
var StartUnits = "";
var EndUnits = "";
var yield = "";
var formValues = new double[29];//array for holding results from Query
var QC = "";
int RecordCount = 0;
var sqlfrmValues = (db.Query("SELECT * FROM YieldEncap WHERE ThorneID = '" + ThorneID + "'")).Cast<DynamicRecord>().ToArray();
if (IsPost)
{
switch (Request.Form["userInput"])
{
case "Submit":
ThorneID = Request.Form["ThorneID"];
StartUnits = Request.Form["s12"];
EndUnits = Request.Form["s15"];
yield = Request.Form["s17"];
QC = Request.Form["QC"];
//Set to zero to avoid trying to put nulls in DB
if (Request.Form["s12"] == null)
{
StartUnits = "0";
}
else
{
StartUnits = Request.Form["s12"];
}
if (Request.Form["s15"] == null)
{
EndUnits = "0";
}
else
{
EndUnits = Request.Form["s15"];
}
if (Request.Form["s17"] == null)
{
yield = "0";
}
else {
yield = Request.Form["s17"];
}
for (int i = 1; i <= 26; i++)
{
//set to 1 to keep NaN from appearing, cant divide by zero
var itemStr = "var" + i.ToString();
var rfTemp = "";
if (Request.Form[itemStr] == null)
{
rfTemp = "0";
if (i == 3)
{
rfTemp = "1";
}
if (i == 10)
{
rfTemp = "1";
}
if (i == 16)
{
rfTemp = "1";
}
}
else
{
rfTemp = Request.Form[itemStr];
}
//put commas after 1st variable in the string for SQL
if (i != 1)
{
frmUpdate += ", ";
frmInsert += ", ";
frmInsertV += ", ";
}
frmUpdate += "s" + i + "= " + rfTemp;
frmInsertV += "s" + i;
frmInsert += rfTemp;
}
var UPSERTcommand = "IF EXISTS (SELECT * FROM YieldEncap WHERE ThorneID = '" + ThorneID + "') "
+ "UPDATE YieldEncap SET " + frmUpdate + ", QC='" + QC + "' "
+ "WHERE ThorneID = '" + ThorneID + "' "
+ "ELSE "
+ "INSERT INTO YieldEncap (ThorneID, QC, " + frmInsertV + ") "
+ "VALUES (" + ThorneID + ", '" + QC + "', " + frmInsert + ")";
db.Execute(UPSERTcommand);
UPSERTcommand = "IF EXISTS (SELECT * FROM BR_Details_Yield WHERE ThorneID = '" + ThorneID + "') "
+ "UPDATE BR_Details_Yield SET Department = 'Encap', Units = 'g', StartUnits = '" + StartUnits + "', EndUnits = '" + EndUnits + "', Yield = '" + yield + "' "
+ "WHERE ThorneID = '" + ThorneID + "' "
+ "ELSE "
+ "INSERT INTO BR_Details_Yield (Department, Units, StartUnits, EndUnits, Yield) "
+ "VALUES ('Encap', 'Bottles', " + StartUnits + ", " + EndUnits + ", " + yield + ")";
db.Execute(UPSERTcommand);
UPSERTcommand = "";
sqlfrmValues = (db.Query("SELECT * FROM YieldEncap WHERE ThorneID = '" + ThorneID + "'")).Cast<DynamicRecord>().ToArray();
RecordCount = (int)db.QueryValue("SELECT COUNT(*) FROM YieldEncap WHERE ThorneID = '" + ThorneID + "'");
//read out the values from sqlfrmValues and place them in an array
if (RecordCount > 0)
{
for (int i = 1; i <= 26; i++)
{
if (sqlfrmValues[0][i] != null)
{
formValues[i] = Convert.ToDouble(sqlfrmValues[0][i]);
}
else
{
formValues[i] = 0;
}
}
QC = Convert.ToString(sqlfrmValues[0][27]);
}
else
{
formValues[2] = 1;
formValues[10] = 1;
formValues[16] = 1;
formValues[19] = 1;
}
break;
default:
ThorneID = Request.Form["ThorneID"];
sqlfrmValues = (db.Query("SELECT * FROM YieldEncap WHERE ThorneID = '" + ThorneID + "'")).Cast<DynamicRecord>().ToArray();
var RecordCount2 = (db.Query("SELECT COUNT(*) FROM YieldEncap WHERE ThorneID = '" + ThorneID + "'").Cast<DynamicRecord>().ToArray();
if (RecordCount[0][0] > 0)
{
for (int i = 1; i <= 26; i++)
{
if (sqlfrmValues[0][i] != null)
{
formValues[i] = Convert.ToDouble(sqlfrmValues[0][i]);
}
else
{
formValues[i] = 0;
}
}
QC = Convert.ToString(sqlfrmValues[0][27]);
}
else
{
formValues[6] = 1;
formValues[8] = 1;
formValues[11] = 1;
formValues[24] = 1;
}
//lookup for previous worksheet. Starting point value
//var sqlMixing = (db.Query("SELECT * FROM YieldMixing WHERE ThorneID = '" + ThorneID + "'")).Cast<DynamicRecord>().ToArray();
//var sqlMixingRecordCount = (int)db.QueryValue("SELECT COUNT(*) FROM YieldMixing WHERE ThorneID = '" + ThorneID + "'");
//if (sqlMixingRecordCount > 0)
//{
// var temp = Convert.ToDouble(sqlfrmValues[0][1]);
// formValues[1] = Convert.ToDouble(sqlMixing[0][1]);
//}
var sqlMixing = (db.Query("SELECT * FROM YieldMixing WHERE ThorneID = '" + ThorneID + "'")).Cast<DynamicRecord>().ToArray();
RecordCount = (int)db.QueryValue("SELECT COUNT(*) FROM YieldMixing WHERE ThorneID = '" + ThorneID + "'");
if (RecordCount > 0)
{
formValues[24] = Convert.ToDouble(sqlMixing[0][2]);
formValues[24] = formValues[24] * 1000;
}
break;
}
}
}
o bana söyler html benim! DOCTYPE aldığında "tipi veya ad alanı adı 'DOCTYPE') .... bulunamadı edilemedi Muhtemelen, kapanış parantezinin nerede olduğunu anlayamadığı için.
Neredeyim yanlış gittim? Tüm parantez doğru olduğu için derleyiciler mesajı yararlı olmadığından çok sinir bozucu!
Belki de bu bloğun dışında bir parazite engel olur mu? – Dispersia
Lütfen dizgi birleştirme yerine parametrelenmiş SQL deyimlerini kullanın. Uygulamanızı SQL enjeksiyon güvenlik açıklarına açıyorsunuz. –
Bir Razor görünümü içinde karmaşık kod yazmak, genellikle derleyicinin işaretleme ve kod bloklarıyla uğraşmaya çalıştığı ve birisinin kafasının karıştığı için bu sorunlara yol açacaktır. Kısacası, bunu yapma. Kodun denetleyiciye ya da kodun arkasına (ya da daha iyisi UI tarafından çağrılan diğer sınıflara) dikkat edin, böylece derleyici yalnızca kodla uğraşmak zorundadır. – dbugger