2009-08-18 4 views
1

내 컨트롤러에는 다음과 같은 두 가지 동작이 있습니다.asp.net mvc에서보기를 공유 할 수 있습니까?

  • 결과()
  • 인덱스()

이 두 동작간에 index.aspx이라는보기를 공유하려고합니다.

자세한 내용은 my previous post를 참조하십시오.

페이지에 대한 링크를 만들 때 FormCollection 형식이 예상되므로 작업을 Index로 보낼 수 없다고 가정하고 결과 작업을 만듭니다. 결과 작업

public ActionResult Results(ClientSearch data, int? page) 
    { 
     FormCollection collection = new FormCollection(); 
     collection.Add("FNAme", data.FName); 
     collection.Add("Lane", data.Lane); 
     collection.Add("Zip", data.Zip); 
     collection.Add("Phone", data.Phone); 


     return Index(page, collection); 
    } 

답변

3

물론 가능합니다. 반응하는 방법과 다시 볼 수있는 의견을 결정하는 것은 컨트롤러의 몫입니다.

끝까지 질문을 읽었으니), 음, 같은 이름의 두 가지 행동으로 벗어날 수 있습니다. 하나는 GET 명령 (페이지의 초기로드)을 수락하고, 다른 하나는 POST 요청을 처리하고, 필요한 조치를 취한 다음 동일한보기로 다시 리디렉션합니다.

public MyController 
{ 
    [AcceptVerbs (HttpVerbs.Get)] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [AcceptVerbs (HttpVerbs.Post)] 
    public ActionResult Index (ClientSearch data, int? page) 
    { 
     // Process form post 

     return RedirectToAction ("Index"); 
    } 
} 
4

나는 완전히 질문을 이해하지만 다른 ActionResults에 같은보기를 사용하려면, 당신은 할 수 있습니다 확실하지 :

public ActionResult One() { 
    // do stuff 
    return View("Index", myModel); 
} 


public ActionResult Two() { 
    // do stuff 
    return View("Index", myOtherModel); // Same View 
} 

그냥 당신이보기에 대한 Type 같은를 제공하고 있는지 확인 (보기에 유형이 전혀 필요하지 않은 경우).

관련 문제