Мне было интересно, можно ли вызвать переменную бритвы в контроллере представления?
В основном я пытаюсь воспроизвести процесс из этого видео с некоторыми отличиями: https://thewikihow.com/video_P7i1G6CeOiI
Например, я создаю веб-сайт, который принимает ввод текста из формы и отправляет его по электронной почте на центральный адрес электронной почты. После создания формы на html-странице я затем использую бритву для создания переменной, равной каждому полю ввода.
бывший:
<input class = "input" type = "text" name = "inputOne" />
@{
var input1 = Request["inputOne"];
}
Оттуда я создал строку, которая объединит все переменные для создания тела сообщения электронной почты.
бывший:
string messageBody = "input one: " + input1 + "input two: " + input2 + ect.ect.ect.;
Вот где я немного потерялся. Как показано на видео выше, инструктор жестко кодирует сообщение, отправленное по электронной почте. Очевидно, что в моей ситуации это не сработает, поскольку тело сообщения зависит от ввода пользователя. Я подумал, что будет достаточно просто вызвать строку messageBody, и это будет так - по-видимому, нет. «Имя messageBody не существует в текущем контексте». Мне интересно, как и можно ли вызвать строку «messageBody» в контроллере? Или, может быть, мне больше подошел бы совершенно другой метод?
Вы никогда не должны получать данные из Request в коде MVC. Вместо этого используйте привязку модели и модели просмотра.
Вы должны переместить эту логику в контроллер и передать ее представлению в модели.





Создайте два действия, которые возвращают представления внутри вашего контроллера. Один для GET и один для POST.
Кроме того, создайте свою модель, которую вы будете использовать, ваша модель должна иметь свойство InputOne, оно выглядит следующим образом:
public class RegisterViewModel
{
public string InputOne { get; set; }
}
Действия:
[HttpGet]
public ActionResult Example()
{
var model = new ExampleViewModel();
return View(model);
}
[HttpPost]
public ActionResult Example(ExampleViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Process the model as you wish...
return RedirectToAction(nameof(AnotherAction));
}
Создайте соответствующий View (папка Views / YourControllerName / Example.cshtml) Включите в представление вашу модель просмотра и реализуйте форму:
@model YourProjectName.Project.Models.ExampleViewModel
<div>
@using (Html.BeginForm("Example", "YourController", FormMethod.Post))
{
@Html.TextBoxFor(model => model.InputOne)
<input type = "submit" value = "Submit">
}
</div>
Надеюсь это поможет!
Отправьте форму и прочтите ее в методе действия, который обрабатывает отправку формы. Вы пробовали такой подход?