ASP.Net MVC 뷰에서 컨트롤러로 데이터를 전달하는 방법
저는 ASP.Net을 완전히 처음 사용하고 이것이 매우 기본적인 질문이라고 확신합니다. 보고서를 생성 할 수있는 링크가 있지만 보고서를 생성 할 수 있으려면 사용자에게 적절한 텍스트 이름을 제공하도록 요청해야합니다. 잘.
지금까지 컨트롤러에서 전달 된 모델을 사용하여 서버에서 뷰로 데이터를 전달할 수 있었지만 뷰에서 컨트롤러로 데이터를 전달하는 방법을 잘 모르겠습니다.
이 경우 뷰에서 컨트롤러로 문자열을 전달하면됩니다.
예를 들어 조언을 주시면 감사하겠습니다.
최신 정보
데이터를 서버에 다시 게시해야한다는 것을 이해하지만 razorhtml 코드 및 컨트롤러의 형태로 어떻게 실현됩니까?
컨트롤러에서보기 위해 데이터를 전달하는 방법과 같이 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)
{
//check for model.Name property value now
//to do : Return something
}
또는 간단히 POCO 클래스 (Viewmodels)없이이를 수행 할 수 있습니다.
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
HttpPost 작업에서 텍스트 상자 이름과 동일한 이름의 매개 변수를 사용하십시오.
[HttpPost]
public ActionResult Report(string reportName)
{
//check for reportName parameter value now
//to do : Return something
}
편집 : 코멘트에 따라
다른 컨트롤러에 게시하려는 경우 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" />
}
게시를 원하지 않거나 필요하지 않은 경우 :
@Html.ActionLink("link caption", "actionName", new { Model.Page }) // view's controller
@Html.ActionLink("link caption", "actionName", "controllerName", new { reportID = 1 }, null);
[HttpGet]
public ActionResult actionName(int reportID)
{
Note that the reportID in the new {} part matches reportID in the action parameters, you can add any number of parameters this way, but any more than 2 or 3 (some will argue always) you should be passing a model via a POST (as per other answer)
Edit: Added null for correct overload as pointed out in comments. There's a number of overloads and if you specify both action+controller, then you need both routeValues and htmlAttributes. Without the controller (just caption+action), only routeValues are needed but may be best practice to always specify both.
<form action="myController/myAction" method="POST">
<input type="text" name="valueINeed" />
<input type="submit" value="View Report" />
</form>
controller:
[HttpPost]
public ActionResult myAction(string valueINeed)
{
//....
}
참고URL : https://stackoverflow.com/questions/20333021/asp-net-mvc-how-to-pass-data-from-view-to-controller
'code' 카테고리의 다른 글
HTML에서 여러 행에 걸쳐있는 테이블 헤더를 어떻게 구성 할 수 있습니까? (0) | 2020.11.08 |
---|---|
목록에 고유 항목 만 추가 (0) | 2020.11.07 |
2 차원 배열 이니셜 라이저와 대괄호 (0) | 2020.11.07 |
Windows의 bash 스크립트에서 Openssl 실행-제목이 '/'로 시작하지 않음 (0) | 2020.11.07 |
데이터 프로토콜 URL 크기 제한 (0) | 2020.11.07 |