Как вызвать метод некоторого Контроллера и передать параметры из строки запроса - PullRequest
0 голосов
/ 04 мая 2018

в моем приложении я создал URL-адрес, подобный этому:

http://www.test.com/?mail=test%40gmail.ba&code=71147ff9-87ae-41fc-b53f-5ecb3dbe5a01

Способ создания URL-адреса приведен ниже:

private string GenerateUrl(string longUrl, string email, string confirmCode)
{
    try
    {
        // By the way this is not working (Home/MailConfirmed) I'm getting message 
        // Requested URL: /Home/MailConfirmed
        // The resource cannot be found.
        string url = longUrl + "/Home/MailConfirmed";
        var uriBuilder = new UriBuilder(url);
        var query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query["mail"] = email;
        query["code"] = confirmCode;
        uriBuilder.Query = query.ToString();
        uriBuilder.Port = -1;
        url = uriBuilder.ToString();
        return url;
    }
    catch (Exception ex)
    {
        return "Error happened: " + ex.Message;
    }
}

В longUrl я прохожу www.test.com, по электронной почте я прохожу test@gmail.com и так далее ..

Информация о моем сайте:

www.test.com

почта: test@gmail.com

Утверждение Кодекса: 71147ff9-87ae-41fc-b53f-5ecb3dbe5a01

А в моем HomeController.cs есть метод, который должен вывести параметры из строки запроса - url и передать его методу, который должен активировать учетную запись пользователя, получая пользователя по почте (почта уникальна) и сравнивая этот guid с guid. в базе данных. Поэтому мне интересно, как я могу вызвать этот метод?

Итак, мой метод выглядит так:

 public  JsonResult MailConfirmed(string mail, string confirmCode)
 {
       try
       {
           // Here I will get user and update it in DB
              return Json("success", JsonRequestBehavior.AllowGet);
       }
       catch(Exception ex)
       {
           return Json("fail", JsonRequestBehavior.AllowGet);
       }
  }

Таким образом, мой вопрос заключается в том, как пользователь может перейти по следующей ссылке и вызвать метод my ..?

Большое спасибо Приветствия

1 Ответ

0 голосов
/ 04 мая 2018

Чтобы перейти к вашему MailConfirmed(), ваш URL должен быть

http://www.test.com/Home/MailConfirmed?mail=test%40gmail.ba&confirmcode=71147ff9-87ae-41fc-b53f-5ecb3dbe5a01

Обратите внимание на сегменты для имен контроллера и действия, и code=xxx должно быть confirmcode=xxx, чтобы соответствовать имени параметра в методе.

Вы можете упростить свой код (и удалить свой метод GenerateUrl()), используя методы UrlHelper для генерации URL).

Чтобы сгенерировать вышеуказанный URL, все что вам нужно в вашем методе контроллера это

string url = Url.Action("MailConfirmed", "Home", 
    new { mail = email, confirmcode = confirmCode },
    this.Request.Url.Scheme);
...