에 나는 (간단하게하는) 내 HomeController에서 작업을해야/MyAction. HomeController에서 MyAction 메서드를 찾을 수 없다는 불만이 있으며 viewModel 매개 변수 때문에 이것이 의심 스럽습니다.ASP.NET MVC3 게시 양식 다시 같은 동작
이 문제를 해결할 방법이 있습니까? viewModel 매개 변수가 null 일 것으로 예상됩니다.
에 나는 (간단하게하는) 내 HomeController에서 작업을해야/MyAction. HomeController에서 MyAction 메서드를 찾을 수 없다는 불만이 있으며 viewModel 매개 변수 때문에 이것이 의심 스럽습니다.ASP.NET MVC3 게시 양식 다시 같은 동작
이 문제를 해결할 방법이 있습니까? viewModel 매개 변수가 null 일 것으로 예상됩니다.
대답이 필요 하나 또는 [HttpGet] 및 [HttpPost] 액션 필터를 모두 제거하는 것입니다.
다른 사람을 교화하는 데있어 모델 클래스에 공용 기본 생성자가있는 경우 대체 매개 변수없는 버전의 메서드가 없어도 모델 매개 변수를 허용하는 동작 방법을 사용할 수 있습니다.
MVC ModelBinder는 모델 클래스의 빈 인스턴스를 생성합니다.
맞춤 모델 바인딩에 대한 자세한 내용은 IModelBinder 인터페이스를 살펴보십시오.
고마워요,이게 내 문제를 해결했습니다 :-) – Peter
당신은 아직 그 뷰에서 (HttpGet
또는 HttpPost
속성이 적용 곳이다) 제출 된 작업을 처리 할 수있는 일을 URL
public ActionResult MyAction()
{
return View();
}
에서 시작하고 사용할 수 없음 매개 변수를 사용하여 하나 개의 조치가 필요한 그때까지 viewModel
이됩니다.
내가 아는 한, URl을 방문하여 자신의 견해 모델을 당신의 행동에 전달해야하는 이유는 무엇인지, 왜 당신이 언급 한 시나리오를 주선했는지, 나는 당신이 누락 된 행동을 고치도록 도울 것입니다. 동작 및 ASP.NET MVC에서 검색 가능하게하는 방법에 대해 설명합니다.
viewModel
매개 변수 때문에 올바른지, MVC3의 기본 경로는이 작업을 찾지 못하므로 컨트롤러 작업과 일치하는 새 경로를 정의해야합니다. 당신이 할 수있는, 그래서 앱 라우팅 테이블, 당신의 행동 방법을 알고 있어야
routes.MapRoute(
"SearchRoute1", // Route name
"MyAction/{viewModel}", // URL with parameters
new { controller = "Home", action = "MyAction", viewModel = "" } // Parameter defaults
);
가 특별히 RegisterRoutes(RouteCollection routes)
방법 안에, 당신의 Global.ASAX
파일 내부에 이런 식으로 뭔가를 정의합니다 :
다음 코드를 고려 요청을 정상적으로 처리하십시오.
도움이되었는지 알려주세요. 감사합니다.
그건 맞지 않아. 당신은 매개 변수없는 행동 방법을 필요로하지 않습니다. 전달하는 클래스에 기본 생성자가 있고보기에 지정된 유형 인 경우 MVC가 인스턴스를 만듭니다. –
그가 호출하려고하는 것은 매개 변수가있는 작업이며 실제로 호출하는 것은 MVC3에서 생성하는 기본 동작입니다.이 호출에서는 매개 변수가없는 호출이 아니라 매개 변수가없는 호출이 사용됩니다. 내 대답에는 코드가 포함되어 있지 않습니다. 매개 변수없는 동작. 친절하게도 내가 틀렸다면 나를 바로 잡아라. –
문제는 OP의 컨텍스트에 대해 아직 충분히 알지 못한다는 것입니다. MyAction에 매개 변수가없는 정의가 없다고 가정합니다. ** MyAction (MyOwnViewModel viewModel) ** 메서드 *는 모델을 전달하지 않아도 호출해야합니다. . –
ActionResult
에는 두 가지 다른 HTTP 메소드가있을 수 없습니다. 당신이 경우에 ... 오버로드를 사용하는
public ActionResult MyAction()
{
return View(new MyViewModel());
}
그리고
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
// Do your stuff...
return View(model);
}
네 말이 맞아, 나는 너의 말씨가 꺼져 있다고 생각해. POST와 GET을 모두 동일한 작업으로 수행 할 수 있습니다. 그러나 속성을 사용하여이를 지정할 수는 없습니다. GET 및 POST 속성을 제거한 경우에만 작동합니다. – Peter
알다시피, 나는 그것을 어떻게 말로 잘 모르겠다! 나는이 방법을 선호하는데, 나에게 읽기 쉽다. – simonlchilds
메서드에 대한 HttpGet 및 HttpPost 필터 값이 확실하지 않습니다. 그들이 제거되면 어떻게됩니까? MyOwnViewModel에 기본 생성자가 있습니까? 매개 변수없이 정의하면 동작이 호출됩니까? –
또한 @model 선언을 사용하여 면도기를 사용하고 viewmodel을 지정하고 있습니까? –
@Zootius, 기본 생성자는 분명히 중요하지 않습니다. 그러나 당신이 언급 한대로 [HttpGet]과 [Http Post]를 제거하는 것이 중요합니다. 귀하의 의견을 보내 주셔서 감사합니다! – Peter