Bạn có thể làm điều đó với ViewModels như cách bạn truyền dữ liệu từ bộ điều khiển của mình để xem.
Giả sử bạn có một mô hình xem như thế này
public class ReportViewModel
{
public string Name { set;get;}
}
và trong GET Action của bạn,
public ActionResult Report()
{
return View(new ReportViewModel());
}
và chế độ xem của bạn phải được đánh mạnh vào ReportViewModel
@model ReportViewModel
@using(Html.BeginForm())
{
Report NAme : @Html.TextBoxFor(s=>s.Name)
<input type="submit" value="Generate report" />
}
và trong phương thức hành động HttpPost trong bộ điều khiển của bạn
[HttpPost]
public ActionResult Report(ReportViewModel model)
{
}
HOẶC Đơn giản, bạn có thể làm điều này mà không cần các lớp POCO (Viewmodels)
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
và trong hành động HttpPost của bạn, hãy sử dụng một tham số có cùng tên với tên hộp văn bản.
[HttpPost]
public ActionResult Report(string reportName)
{
}
CHỈNH SỬA: Theo nhận xét
Nếu bạn muốn đăng lên bộ điều khiển khác, bạn có thể sử dụng quá tải này của phương thức BeginForm.
@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
<input type="text" name="reportName" />
<input type="submit" />
}
Truyền dữ liệu từ phương thức hành động để xem?
Bạn có thể sử dụng cùng một mô hình chế độ xem, chỉ cần đặt các giá trị thuộc tính trong phương thức hành động GET của bạn
public ActionResult Report()
{
var vm = new ReportViewModel();
vm.Name="SuperManReport";
return View(vm);
}
và trong tầm nhìn của bạn
@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" />
}