Привет всем! Делаю проект в Razor Pages, пользователь вводит ссылку в специальное поле, затем ему генерится сокращенный вариант ссылки.
Индекс страница localhost:port
Вид короткой сгенерированной ссылки localhost:port/as214F
Снизу код.
index.cshtml
@page "/{url?}"
@model URL.Pages.IndexModel
@{
ViewBag.Title = "Сокращение длины ссылок";
}
<h2>@Model.Message</h2>
<form method="post">
<p>
<label>Ссылку:</label><br />
<input type="text" name="userLink"/>
</p>
<button type="submit" class="btn btn-primary">Отправить</button>
</form>
Index.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using URL.DatabaseFiles.Context;
using URL.DatabaseFiles.Models;
namespace URL.Pages
{
[IgnoreAntiforgeryToken]
public class IndexModel : PageModel
{
public string Message { get; private set; } = "";
public string ReadyLink { get; private set; } = "";
private readonly MyDbContext _db;
const string range = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASFGHJKLZXCVBNM";
private readonly IConfiguration _configuration;
public IndexModel(MyDbContext db, IConfiguration configuration)
{
_db = db;
_configuration = configuration;
}
public void OnGet()
{
Message = "Введите ссылку";
}
public void OnPost(string userLink)
{
Random random = new Random();
string name = new string(Enumerable.Repeat(range, 6).Select(s => s[random.Next(s.Length)]).ToArray());
Link link = new Link
{
Url = userLink,
ShortedUrl = name
};
_db.Links.Add(link);
_db.SaveChanges();
Message = $"Ссылка готова - {_configuration.GetSection("Link:ShortUrl").Value + name}";
}
public IActionResult OnGetRedirect(string url)
{
Link link = _db.Links.FirstOrDefault(s => s.ShortedUrl == url);
if (link != null)
{
return RedirectToPage(link.Url);
}
else
{
return RedirectToPage(_configuration.GetSection("Link:ShortUrl").Value);
}
}
}
}
Помогите, пожалуйста. Я никак не могу понять, почему при вводе укороченной ссылки не пере адресуется на изначальный адрес