Вы можете сделать это с помощью ViewModels, например, как вы передали данные из вашего контроллера для просмотра.
Предположим, у вас есть такая модель просмотра
public class ReportViewModel
{
public string Name { set;get;}
}
и в вашем действии GET,
public ActionResult Report()
{
return View(new ReportViewModel());
}
и ваше мнение должно быть строго типизировано для ReportViewModel
@model ReportViewModel
@using(Html.BeginForm())
{
Report NAme : @Html.TextBoxFor(s=>s.Name)
<input type="submit" value="Generate report" />
}
и в вашем методе действия HttpPost в вашем контроллере
[HttpPost]
public ActionResult Report(ReportViewModel model)
{
}
ИЛИ Просто вы можете сделать это без классов POCO (Viewmodels)
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
а в действии HttpPost используйте параметр с тем же именем, что и имя текстового поля.
[HttpPost]
public ActionResult Report(string reportName)
{
}
РЕДАКТИРОВАТЬ: согласно комментарию
Если вы хотите отправить сообщение другому контроллеру, вы можете использовать эту перегрузку метода BeginForm.
@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
<input type="text" name="reportName" />
<input type="submit" />
}
Передача данных из метода действия для просмотра?
Вы можете использовать ту же модель представления, просто установите значения свойств в своем методе действия GET.
public ActionResult Report()
{
var vm = new ReportViewModel();
vm.Name="SuperManReport";
return View(vm);
}
и на ваш взгляд
@model ReportViewModel
<h2>@Model.Name</h2>
<p>Can have input field with value set in action method</p>
@using(Html.BeginForm())
{
@Html.TextBoxFor(s=>s.Name)
<input type="submit" />
}