170 похожих чатов

Здравствуйте! Нужна помощь. Во время каникул решил написать свои мини

проекты. Делаю на Razor pages.
Идея такова, юзер вводит в специальное поле ссылку, затем жмет на кнопку отправить и ему генерится сокращенная ссылка.


Все действия проходят в индексе.


Index.cshtml.cs файл состоит из трех функций, первая просто выводит сообщение "Введите ссылку", затем юзер вводит ссылку(например telegram.org) нажимает на кнопку отправить и в это время генерится ссылка "localhost:port/qasasas" например, все записывается в базу.


По моей идее, программа должна посмотреть содержимое после '/' и перенаправить на этот сайт.


Я не могу понять как сделать так, чтобы при переходе на выходила ошибка 404, помогите пожалуйста.

Вот код:


Index.cshtml
———————————

@page
@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 = "qwertyuiopasdfghjklzxcvbnm1234567890";
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}";
}

[Route("/url")]
public IActionResult OnPostRedirect(string url)
{
Link link = _db.Links.FirstOrDefault(s => s.ShortedUrl == url);
if(link != null)
{
return Redirect(link.Url);
}
else
{
return Redirect(_configuration.GetSection("Link:ShortUrl").Value);
}
}
}
}

Что нужно добавить, чтобы при переходе на ссылку localhost:port/asasas переводил меня на мною раннее введенный сайт ?

// "Link": {
"ShortUrl": "https://localhost:7219/"
}

5 ответов

8 просмотров

Залей, пожалуйста, код в pastebin

MapFallback вроде так

Ойбек-Кучкаров Автор вопроса
Anton
MapFallback вроде так

а в index.cshtml ничего не надо добавлять /убрать

Anton
MapFallback вроде так

а вроде еще вот так можно: @page "{short?}" и в OnGet(string short)

Ойбек-Кучкаров Автор вопроса
Anton
а вроде еще вот так можно: @page "{short?}" и в On...

сейчас попробую. взял на карандаш себе.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
9
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта