C# 无法在请求中使用整数类型

C# 无法在请求中使用整数类型,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我正在尝试设计一个凭证检索过程。我尝试使用了HttpRequestBase。然而,我不能再往前走了HttpRequestBase只接受字符串,但我必须传递int。数据库有“EmailID as string”和“TaxID as int”以下是我遇到问题的两种情况 情景1: string EmailID = Request["EmailID"]; int TaxID = Request[TaxID]; //Tax ID is having following errors //Error CS1

我正在尝试设计一个凭证检索过程。我尝试使用了
HttpRequestBase
。然而,我不能再往前走了
HttpRequestBase
只接受字符串,但我必须传递int。数据库有“EmailID as string”和“TaxID as int”以下是我遇到问题的两种情况

情景1:

string EmailID = Request["EmailID"];
int TaxID = Request[TaxID];
//Tax ID is having following errors
//Error CS1503: Argument 1: cannot convert from 'int' to 'string'
//Error CS0165: Use of unassigned local variable 'TaxID'
SUPRTestingDBEntities2 dbcontrol = new SUPRTestingDBEntities2();
var userAuth = (from data in dbcontrol.SUPRTesting where data.EmailID == EmailID
                                && data.TaxID == TaxID
                                select data).FirstOrDefault();
if (userAuth != null)
{
    Session["EmailID"] = userAuth.EmailID;
    Session["LoginID"] = userAuth.LoginID;
    return RedirectToAction("LIDAuthentication", "Corporation");
}
else if (userAuth == null)
{
    return View();
}
场景2,这里我将
TaxID
type更改为string(第2行),这会在第5行抛出错误:

string EmailID = Request["EmailID"];
string TaxID = Request[TaxID];
SUPRTestingDBEntities2 dbcontrol = new SUPRTestingDBEntities2();
var userAuth = (from data in dbcontrol.SUPRTesting where data.EmailID == EmailID
                                && data.TaxID == TaxID
                                /*Error CS0019: Operator '==' cannot be applied to operands of type 'int' and 'string'*/
                                select data).FirstOrDefault();
if (userAuth != null)
{
    Session["EmailID"] = userAuth.EmailID;
    Session["LoginID"] = userAuth.LoginID;
    return RedirectToAction("LIDAuthentication", "Corporation");
}
else if (userAuth == null)
{
    return View();
}

有人能帮我吗。

您需要的是将您的
TaxId
请求转换为int,然后您的场景1应该可以正常工作,如下所示:

int TaxID = Convert.ToInt32(Request[TaxID]);
但是,我会这样做以更好地处理所有可能的错误:

string taxID = Request["TaxID"];

if (!String.IsNullOrEmpty(taxID) && int.TryParse(taxID, out int TaxID))
{
    //Your code here, use TaxID in your query
}

您需要的是将您的
TaxId
请求转换为int,然后场景1应该可以正常工作,如下所示:

int TaxID = Convert.ToInt32(Request[TaxID]);
但是,我会这样做以更好地处理所有可能的错误:

string taxID = Request["TaxID"];

if (!String.IsNullOrEmpty(taxID) && int.TryParse(taxID, out int TaxID))
{
    //Your code here, use TaxID in your query
}

除非我误解了您的意图,否则您根本不需要使用
Request
。您可以通过向控制器方法添加参数来获得此信息:

public ActionResult MyMethod(string EmailID, int TaxID) // query string parameters moved to method parameters
{
    SUPRTestingDBEntities2 dbcontrol = new SUPRTestingDBEntities2();
    var userAuth = (from data in dbcontrol.SUPRTesting
                    where data.EmailID == EmailID
                        && data.TaxID == TaxID
                    select data).FirstOrDefault();

    if (userAuth != null)
    {
        Session["EmailID"] = userAuth.EmailID;
        Session["LoginID"] = userAuth.LoginID;
        return RedirectToAction("LIDAuthentication", "Corporation");
    }
    else if (userAuth == null)
    {
        return View();
    }
}

除非我误解了您的意图,否则您根本不需要使用
Request
。您可以通过向控制器方法添加参数来获得此信息:

public ActionResult MyMethod(string EmailID, int TaxID) // query string parameters moved to method parameters
{
    SUPRTestingDBEntities2 dbcontrol = new SUPRTestingDBEntities2();
    var userAuth = (from data in dbcontrol.SUPRTesting
                    where data.EmailID == EmailID
                        && data.TaxID == TaxID
                    select data).FirstOrDefault();

    if (userAuth != null)
    {
        Session["EmailID"] = userAuth.EmailID;
        Session["LoginID"] = userAuth.LoginID;
        return RedirectToAction("LIDAuthentication", "Corporation");
    }
    else if (userAuth == null)
    {
        return View();
    }
}