I am new to c# and I am trying to return a value in an IHttpActionResult method however it is showing an error the name objApprovalModel does not exist in the current context.
Here is my code:
[HttpPost]
[Route("GetApprovalTableValue")]
public IHttpActionResult GetApprovalTableValue(string rowno)
{
try
{
List<ApprovalModel> approvalModels = new List<ApprovalModel>();
//var objUserModel = new UserModel();
ManageUserData ObjManageUserData = new ManageUserData();
var sqlDataTable = ObjManageUserData.GetApprovalTableValue(rowno);
if (sqlDataTable.Rows.Count > 0)
{
for (int i = 0; (i < sqlDataTable.Rows.Count); i )
{
var objApprovalModel = new ApprovalModel();
objApprovalModel.MasterID = Convert.ToInt32(sqlDataTable.Rows[i]["TAT_Master_ID"].ToString());
objApprovalModel.EntityType = Convert.ToInt32(sqlDataTable.Rows[i]["TAT_EntityTypeId"].ToString());
objApprovalModel.ApproverID = (sqlDataTable.Rows[i]["TAT_Approver_ID"].ToString());
objApprovalModel.Remarks = (sqlDataTable.Rows[i]["TAT_Remarks"].ToString());
objApprovalModel.Action = Convert.ToInt32(sqlDataTable.Rows[i]["TAT_Action"].ToString());
objApprovalModel.Active = (sqlDataTable.Rows[i]["TAT_IS_ACTIVE"].ToString());
objApprovalModel.CreatedBy = (sqlDataTable.Rows[i]["TAT_CREATED_BY"].ToString());
objApprovalModel.CreatedOn = (DateTime)(sqlDataTable.Rows[i]["TAT_CREATED_ON"]);
objApprovalModel.UpdatedBy = (sqlDataTable.Rows[i]["TAT_UPDATED_BY"].ToString());
objApprovalModel.UpdatedOn = (DateTime)(sqlDataTable.Rows[i]["TAT_UPDATED_ON"]);
}
}
return Ok(objApprovalModel);
}
catch (Exception ex)
{
return Content(HttpStatusCode.NoContent, "Something went wrong");
}
}
The approval model is this:
public class ApprovalModel
{
public int MasterID { get; set; }
public int EntityType { get; set; }
public string ApproverID { get; set; }
public string Remarks { get; set; }
public int Action { get; set; }
public string Active { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string UpdatedBy { get; set; }
public DateTime UpdatedOn { get; set; }
}
How do I remove this error and return value to my api?
CodePudding user response:
You've declared the variable inside a smaller scope and are trying to reference it outside of that scope.
Consider this... What would you expect the method to return if the if
statement is false
or if the for
loop has 0
iterations?
Either return from the scope where it is declared:
if (sqlDataTable.Rows.Count > 0)
{
for (int i = 0; (i < sqlDataTable.Rows.Count); i )
{
var objApprovalModel = new ApprovalModel();
//...
return Ok(objApprovalModel);
}
}
// return something else here
Or declare it outside of that scope first:
var objApprovalModel = new ApprovalModel();
if (sqlDataTable.Rows.Count > 0)
{
for (int i = 0; (i < sqlDataTable.Rows.Count); i )
{
//...
}
}
return Ok(objApprovalModel);