нужно генерировать HTML страницу на сервере по заданным данным, что бы после отправить человеку email с прикреплённой html формой
писать тупо строкой не тем => типа того:
может есть какие билдеры? (ASP.NET Core)
(что-то вроде HtmlTextWriter, как в framework)
Обычно принято делать это в представлениях (view).
Т.е. у вас есть контроллер, который получает данные:
public class BookController : Controller
{
public BookController()
{
this.Books = new List<Book>()
{
new Book { Id = 1, Title = "книга 1" },
new Book { Id = 2, Title= "книга 2" },
};
}
public List<Book> Books { get; }
public async Task<IActionResult> GetAllBooks()
{
var model = this.Books; // TODO: Read from db
return this.View(model);
}
}
И есть некоторое представление, в котором отображаются данные нужным способом:
@model IEnumerable<Book>
@{
ViewBag.Title = "Все книги";
}
<h2>@ViewBag.Title</h2>
<table class="table">
<thead>
<tr>
<td>id</td>
<td>title</td>
</tr>
</thead>
<tbody>
@foreach (var book in Model)
{
<tr>
<td>@book.Id</td>
<td>@book.Title</td>
</tr>
}
</tbody>
</table>
Вот и всё. Почитайте про подход mvc (model-view-controller), это вам поможет.
При этом повторяющийся код всех страниц (header-footer и т.п.) принято выносить в единый файл _Layout.cshtml (а в контроллере прописывают только саму серёдку страницы).
Начните изучение с какого-нибудь букваря по asp.net, например этого.
Также, в asp.net core возможен другой подход - Razor Pages. Суть примерно такая же, только сделано немного иначе: у вас есть файл AllBooks.cshtml с разметкой и файл AllBooks.cshtml.cs с управляющим кодом.
Пример файла AllBooks.cshtml.cs:
public class GetAllBooksModel : PageModel
{
public GetAllBooksModel()
{
this.Books = new List<Book>()
{
new Book { Id = 1, Title = "книга 1" },
new Book { Id = 2, Title= "книга 2" },
};
}
public List<Book> Books { get; }
public void OnGet()
{
}
}
И практически такой же файл AllBooks.cshtml:
@page
@model WebApplication1.Pages.GetAllBooksModel
@{
ViewBag.Title = "Все книги";
}
<h2>@ViewBag.Title</h2>
<table class="table">
<thead>
<tr>
<td>id</td>
<td>title</td>
</tr>
</thead>
<tbody>
@foreach (var book in Model.Books)
{
<tr>
<td>@book.Id</td>
<td>@book.Title</td>
</tr>
}
</tbody>
</table>
(Здесь так же генерируется только сердевина страницы, а остальная обвязка записана в _Layout)
А вот так может выглядеть /View/Shared/_Layout.cshtml (обратите внимание на директиву, которая подключает генерацию содержимого страницы, которое вы пишете в контроллерах или razor pages):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebApp1</title>
</head>
<body>
<div class="container body-content">
@RenderBody()
</div>
<div class="container-fluid">
<footer>
<div class="row">
<div class="col-6 col-sm-6">
<p>© 2018 - WebApp1</p>
</div>
</div>
</footer>
</div>
</body>
</html>
Вы можете использовать Razor отдельно от AST.NET MVC, но придется написать ~50 строк, чтобы его настроить. Посмотрите сниипет в ответе на похожий вопрос: https://stackoverflow.com/questions/38247080/using-razor-outside-of-mvc-in-net-core/47756437#47756437
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пробовал уже многие варианты, но ничего не работаетВот последняя догадка:
Надо сделать интервал из которого программа будет сама задавать значение и потом чтобы при проверке если не подошло значение ,то программа...
Нужен аналогический метод к tcpListenerPending() но в классе Socket
Использую Selenium для прохождения регистрации на сайте, имеется кнопка(вот вся информация по ней):