我正在浏览YouTube视频,以了解ASP.NET。我已经得到它的大部分工作,有一个主要的警告:我不能从隐藏的领域ID退休的价值。因此,我没有价值发送到存储过程来创建或更新。无法获取ASP.NET隐藏字段的值
注释掉的是原文。当我有那么执行 .ExecuteNonQuery,我得到以下错误:
"Procedure or function 'ResourceCreateOrUpdate' expects parameter '@ResourceID', which was not supplied.".
当我尝试显示hfResourceID,我没有试图通过0时,对于创建,或资源ID值,即1但是,这个价值并没有达到目标。我知道存储过程的工作原理,因为我可以在SQL Server Management中执行它。
我试着将hfResourceID移动到一个字符串,然后是一个整数值,但我似乎遇到了创建if/else的问题:一切都被标记为错误。当我将鼠标悬停在线条,我得到以下信息,这几乎离开我无言以对:
"Embedded statement cannot be a declaration or labeled statement".
我是否能够得到关于如何清理我的错误任何指针吗?谢谢。
2017年10月13日10:38 @:代码更新
<asp:HiddenField ID="hfResourceID" runat="server" />
protected void btnSave_Click(object sender, EventArgs e)
{
int intResourceID = 0;
bool boolIDHasValue = true;
try
{
intResourceID = Convert.ToInt32(hfResourceID.Value);
}
catch (Exception ex)
{
lblErrorMessage.Text = ex.Message;
boolIDHasValue = false;
}
if (boolIDHasValue)
{
if (sqlconnODRConnection.State == System.Data.ConnectionState.Closed)
sqlconnODRConnection.Open();
SqlCommand sqlcmdCreateOrUpdate = new SqlCommand("ResourceCreateOrUpdate", sqlconnODRConnection);
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@ResourceID", intResourceID);
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@Status", txtStatus.Text.Trim());
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@FirstName", txtFirstName.Text.Trim());
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@MiddleName", txtMiddleName.Text.Trim());
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@LastName", txtLastName.Text.Trim());
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@NickName", txtNickName.Text.Trim());
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@Gender", txtGender.Text.Trim());
sqlcmdCreateOrUpdate.Parameters.AddWithValue("@USCitizen", txtUSCitizen.Text.Trim());
sqlcmdCreateOrUpdate.ExecuteNonQuery();
sqlconnODRConnection.Close();
string strResourceID = hfResourceID.Value;
Clear();
if (strResourceID == "")
lblSuccessMessage.Text = "Saved Successfully";
else
lblSuccessMessage.Text = "Updated Successfully";
FillGridView();
}
}
是什么类型的字段?也许尝试hfResourceID.Text而不是.Value,然后将字符串值解析为int或任何类型。 – akerra
那么,你没有提供一个叫做“@ResourceID”的参数。根据错误,存储过程期望该参数。看起来你试图在某个时候提供这个参数,但现在它被注释掉了。注释中的代码不会执行。 – David
此外,“嵌入语句...”错误引用您的if/else块。你在每个块中做的* only *事情是声明一个变量,没有别的。编译器不允许这样做。没有目的,变量会立即超出范围。 – David