Sie können dies mit ViewModels tun, z. B. wie Sie Daten von Ihrem Controller an die Anzeige übergeben haben.
Angenommen, Sie haben ein solches Ansichtsmodell
public class ReportViewModel
{
public string Name { set;get;}
}
und in Ihrer GET-Aktion,
public ActionResult Report()
{
return View(new ReportViewModel());
}
und Ihre Ansicht muss stark getippt sein ReportViewModel
@model ReportViewModel
@using(Html.BeginForm())
{
Report NAme : @Html.TextBoxFor(s=>s.Name)
<input type="submit" value="Generate report" />
}
und in Ihrer HttpPost- Aktionsmethode in Ihrem Controller
[HttpPost]
public ActionResult Report(ReportViewModel model)
{
}
ODER Sie können dies einfach ohne die POCO-Klassen (Viewmodels) tun.
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
Verwenden Sie in Ihrer HttpPost-Aktion einen Parameter mit demselben Namen wie der Name des Textfelds.
[HttpPost]
public ActionResult Report(string reportName)
{
}
EDIT: Wie im Kommentar
Wenn Sie auf einem anderen Controller posten möchten, können Sie diese Überladung der BeginForm-Methode verwenden.
@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
<input type="text" name="reportName" />
<input type="submit" />
}
Daten von der Aktionsmethode an die Ansicht übergeben?
Sie können dasselbe Ansichtsmodell verwenden, indem Sie einfach die Eigenschaftswerte in Ihrer GET-Aktionsmethode festlegen
public ActionResult Report()
{
var vm = new ReportViewModel();
vm.Name="SuperManReport";
return View(vm);
}
und aus Ihrer Sicht
@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" />
}