Невозможно использовать целочисленные типы в запросе - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь разработать процесс поиска учетных данных. Я пытался использовать HttpRequestBase. Однако я не могу двигаться дальше. HttpRequestBase принимает только строку, но я должен передать int. В базе данных есть «EmailID как строка» и «TaxID как int». Ниже приведены два сценария ios У меня возникли проблемы.

Сценарий 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 на строку (строка 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();
}

Может кто-нибудь помочь мне с этим.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Если я не понял, что вы пытаетесь сделать, вам не нужно вообще использовать 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();
    }
}
0 голосов
/ 24 марта 2020

Вам нужно преобразовать ваш запрос 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...