Ответ 1
Вы можете сделать это с помощью ViewModels, например, как вы передали данные с вашего контроллера для просмотра.
Предположим, что у вас есть viewmodel, подобный этому
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)
{
//check for model.Name property value now
//to do : Return something
}
ИЛИ Просто вы можете сделать это без классов POCO (Viewmodels)
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
и в вашем действии HttpPost используйте параметр с тем же именем, что и имя текстового поля.
[HttpPost]
public ActionResult Report(string reportName)
{
//check for reportName parameter value now
//to do : Return something
}
РЕДАКТИРОВАТЬ: В соответствии с комментарием
Если вы хотите отправить сообщение на другой контроллер, вы можете использовать эту перегрузку метода 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" />
}