Правильно задать параметры для строки запроса ASP.NET CORE
Есть вот такой "велосипед":
[HttpGet("{id}/{token}")]
public IActionResult AccountActivation(int id, int token)
{
User user = db.Users.FirstOrDefault(x => x.Id == id);
if (user == null)
{
ViewBag.Message = "Перейдите по ссылке отправленной на вашу почту для активации аккаунта";
return View();
}
if (user != null)
{
if (user.Status == token.ToString())
{
user.Status = "active";
db.Update(user);
db.SaveChanges();
ViewBag.Message = "Аккаунт активирован";
return View();
}
else if (user.Status == "active")
{
ViewBag.Message = "Аккаунт уже был активирован";
return View();
}
else
{
ViewBag.Message = "Токен не соответствует";
return View();
}
}
ViewBag.Message = "Перейдите по ссылке отправленной на вашу почту для активации аккаунта";
return View();
}
Вопрос в том что когда к примеру перехожу по ссылке: https://localhost:44305/accont/accountactivation/4/514298604 то надпись об ошибке: "Не найдена страница для адреса...". Думаю что ошибка в том что неправильно задал параметры запроса потому что раньше более одного не использовал и могу сейчас тупить. Вот фрагмент из Startup:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}/{token?}"
);
});
Самое главное что все работает и даже этот метод, но если делать запрос к этому же методу с параметрами то выдает ошибку.
Ответы (1 шт):
Автор решения: OXYGEN
→ Ссылка
ссылка с параметрами выглядит вот так https://localhost:44305/accont/accountactivation?id=4&token=514298604
Попробуйте вот так
[HttpGet]
public IActionResult AccountActivation()
{
int id;
int token;
String sid = Request.QueryString["id"];
if (sid != null && sid.Length > 0)
{
if (Int32.TryParse(sid, out id))
{
//we have id
}
else
{
//can't parse id
}
}
String stoken = Request.QueryString["token"];
if (stoken != null && stoken.Length > 0)
{
if (Int32.TryParse(stoken, out token))
{
//we have token
}
else
{
//can't parse token
}
}
User user = db.Users.FirstOrDefault(x => x.Id == id);
if (user == null)
{
ViewBag.Message = "Перейдите по ссылке отправленной на вашу почту для активации аккаунта";
return View();
}
if (user != null)
{
if (user.Status == token.ToString())
{
user.Status = "active";
db.Update(user);
db.SaveChanges();
ViewBag.Message = "Аккаунт активирован";
return View();
}
else if (user.Status == "active")
{
ViewBag.Message = "Аккаунт уже был активирован";
return View();
}
else
{
ViewBag.Message = "Токен не соответствует";
return View();
}
}
ViewBag.Message = "Перейдите по ссылке отправленной на вашу почту для активации аккаунта";
return View();
}