컨트롤러에서보기 위해 데이터를 전달하는 방법과 같이 ViewModels로이를 수행 할 수 있습니다.
이와 같은 뷰 모델이 있다고 가정하십시오.
public class ReportViewModel
{
public string Name { set;get;}
}
그리고 GET Action에서
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)
{
}
또는 간단히 POCO 클래스 (Viewmodels)없이이를 수행 할 수 있습니다.
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
HttpPost 작업에서 텍스트 상자 이름과 동일한 이름의 매개 변수를 사용하십시오.
[HttpPost]
public ActionResult Report(string reportName)
{
}
편집 : 코멘트에 따라
다른 컨트롤러에 게시 하려면 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" />
}