Możesz to zrobić za pomocą ViewModels, na przykład tego, jak przekazałeś dane z kontrolera do wyświetlenia.
Załóżmy, że masz taki model widoku
public class ReportViewModel
{
public string Name { set;get;}
}
aw swojej akcji GET
public ActionResult Report()
{
return View(new ReportViewModel());
}
a Twój widok musi być silnie wpisany do ReportViewModel
@model ReportViewModel
@using(Html.BeginForm())
{
Report NAme : @Html.TextBoxFor(s=>s.Name)
<input type="submit" value="Generate report" />
}
oraz w metodzie akcji HttpPost na kontrolerze
[HttpPost]
public ActionResult Report(ReportViewModel model)
{
}
LUB Po prostu możesz to zrobić bez klas POCO (Viewmodels)
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
aw akcji HttpPost użyj parametru o takiej samej nazwie, jak nazwa pola tekstowego.
[HttpPost]
public ActionResult Report(string reportName)
{
}
EDYCJA: Zgodnie z komentarzem
Jeśli chcesz wysłać do innego kontrolera, możesz użyć tego przeciążenia metody BeginForm.
@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
<input type="text" name="reportName" />
<input type="submit" />
}
Przekazywanie danych z metody akcji do wyświetlenia?
Możesz użyć tego samego modelu widoku, po prostu ustaw wartości właściwości w swojej metodzie akcji GET
public ActionResult Report()
{
var vm = new ReportViewModel();
vm.Name="SuperManReport";
return View(vm);
}
i Twoim zdaniem
@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" />
}