나는 HaHaa presentation on ASP.NET MVC from MIX을보고 있었고 게시 전용 모델을 사용하여 언급했습니다. 게시 용 모델 만 사용할 수 있다고 말한 것 같습니다. 나는 이것에 대한 예제를 찾으려고 노력했다. 그들이 말하는 것을 이해하지 못하겠습니까? 보기 모델과 게시 모델이 동일한 유형이 아닌 강하게 유형화 된보기에서 이것이 어떻게 작동하는지 예를 알고 있습니까?ASP.NET MVC 포스트 모델의 예는 무엇입니까?
답변
다음은 조금 확장 된 ScottGu의 예입니다. @SLaks가 설명했듯이 POST가 수신되면 MVC는 새로운 MyPostName 개체를 만들고 해당 속성을 보낸 사람 필드와 비교하려고 시도합니다. 또한 일치 및 유효성 검사의 결과로 ModelState 속성을 업데이트합니다.
작업이보기를 반환하면 모델도 제공해야합니다. 그러나 뷰는 동일한 모델을 사용할 필요가 없습니다. 실제로 뷰는 확장 된 데이터를 포함하는 다른 모델로 강하게 입력 될 수 있습니다. 예를 들어 DB 테이블의 외부 키에 바인딩 된 탐색 속성을 가질 수 있습니다. 이 경우 POST 모델에서 뷰 모델로 매핑하는 로직이 POST 액션에 포함됩니다.
public class MyGetModel
{
string FullName;
List<MyGetModel> SuggestedFriends;
}
public class MyPostModel
{
string FirstName;
string LastName;
}
//GET: /Customer/Create
public ActionResult Create()
{
MyGetModel myName = new MyGetModel();
myName.FullName = "John Doe"; // Or fetch it from the DB
myName.SuggestedFriends = new List<MyGetModel>; // For example - from people select name where name != myName.FullName
Model = myName;
return View();
}
//POST: /Customer/Create
[HttpPost]
public ActionResult Create(MyPostModel newName)
{
MyGetModel name = new MyGetModel();
name.FullName = newName.FirstName + "" + newName.LastName; // Or validate and update the DB
return View("Create", name);
}
Whats'ActionModel'? – Omar
내 실수는 ActionResult 였어 야합니다. –
좋아요, 이제 이해가됩니다. 조치가 조치의 매개 변수에 나열된 모델의 특성에 입력을 맵핑하기위한 프레임 워크 시도를 제외하고는 게시 된 ANYTHING의 유형을 알 수있는 이유가 없습니다. –
POST 모델은 데이터를 작업 방법으로 전달하는 용도로만 사용됩니다.
POST 조치가보기로 전송하는 모델은받은 모델과 관련이있을 필요는 없으며 대개는 그렇지 않습니다.
마찬가지로 첫 번째 위치에서 양식을 표시하는 초기 GET 동작이 POST 동작에 제출되는 해당보기로 전달되는 모델은 POST 작업에 필요한 모델과 관련 될 필요가 없습니다
입력 매개 변수와 일치하는 속성을 가지고 있으면 매개 변수에 사용할 모델을 POST 작업에 사용할 수 있습니다.
@TimAbell 링크 고정. –