Puede hacerlo con ViewModels, como la forma en que pasó datos de su controlador para ver.
Suponga que tiene un modelo de vista como este
public class ReportViewModel
{
public string Name { set;get;}
}
y en tu acción GET,
public ActionResult Report()
{
return View(new ReportViewModel());
}
y su vista debe estar fuertemente escrita para ReportViewModel
@model ReportViewModel
@using(Html.BeginForm())
{
Report NAme : @Html.TextBoxFor(s=>s.Name)
<input type="submit" value="Generate report" />
}
y en su método de acción HttpPost en su controlador
[HttpPost]
public ActionResult Report(ReportViewModel model)
{
}
O simplemente, puede hacer esto sin las clases POCO (Viewmodels)
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
y en su acción HttpPost, use un parámetro con el mismo nombre que el nombre del cuadro de texto.
[HttpPost]
public ActionResult Report(string reportName)
{
}
EDITAR: Según el comentario
Si desea publicar en otro controlador, puede usar esta sobrecarga del método BeginForm.
@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
<input type="text" name="reportName" />
<input type="submit" />
}
¿Pasando datos del método de acción a la vista?
Puede usar el mismo modelo de vista, simplemente establezca los valores de propiedad en su método de acción GET
public ActionResult Report()
{
var vm = new ReportViewModel();
vm.Name="SuperManReport";
return View(vm);
}
y en tu vista
@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" />
}