2012-03-13 3 views
1

첫 번째, 나쁜 영어로 죄송합니다.ajax.BeginForm을 사용하여 콘텐츠를 변경하는 방법은 무엇입니까?

한 사람이 "Page1"버튼을 클릭하면 컨트롤러는 "Page1"의 렌더 부분과 "page2"및 "allPage"에 대해 동일한 것을 반환합니다.

@{ 
ViewBag.Title = "Title"; 
} 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
<h2>Title</h2> 

@using (Ajax.BeginForm("NameAction", //controller action name 
"NameController", //controller name 
new AjaxOptions //ajax options that tell mvc how to perform the replacement 
{ 
UpdateTargetId = "ViewPage", //id of div to update 
HttpMethod = "Post" //how to call the controller action 
}, new { id = "FormName" })) 
{ 
<input type="submit" id="btn" value="p1" id="p1"/> 
<input type="submit" id="btn" value="p2" id="p2"/> 
<input type="submit" id="btn" value="AllPage" id="AllPage"/> 
<div id="ViewPage"> 
    //render partial view 
</div>   
} 

그리고 내 컨트롤러는 다음과 같습니다 :

내 전망이다

public class NameController : Controller 
{ 
    [HttpPost] 
    public ActionResult NameAction(String btn) 
    { 
     if (Request.IsAjaxRequest()) 
     if(btn="p1") 
     return PartialView("p1"); 
     if(btn="2") 
     return PartialView("p2"); 
     if(btn="3") 
     return PartialView("p3"); 


     return View(); 
    } 
} 

Request.isAjaxRequest는 항상 false 동일하고 partialview 모든 페이지를위한

감사합니다 사업부를 업데이트 할 수 있지만 삭제되지 너의 도움이.

+0

MVC2 또는 MVC3 :

하면 Ajax.BeginForm 작동하고 AJAX 요청을 보내도록 당신이 당신의 페이지에 jquery.unobtrusive-ajax 스크립트를 포함했는지 확인? 질문 태그를 정리하십시오. – ThiefMaster

+0

@ThiefMaster, 나는 '면도날'과 함께 사용할 수없는'asp.net-mvc-2' 태그를 제거했습니다. –

+0

태그에 죄송합니다. 귀하의 수정을 위해 감사드립니다. Darin Dimitrov. 그게 내 "문자열 btn"솔루션은 null이 아니지만 아약스 옵션이 작동하지 않기 때문에 :(왜냐하면 내가 내 컨트롤러 isAjaxRequest 항상 false로 테스트합니다. 그리고 partialview 내 페이지를 모두 지우고 div : s 업데이트 – Zoners

답변

1

부여하여 버튼의 이름 제출 :

<button type="submit" name="btn" value="p1" id="Page1">Show page 1</button> 
<button type="submit" name="btn" value="p2" id="Page2">Show page 2</button> 
<button type="submit" name="btn" value="all" id="AllPage">Show all pages</button> 
: 버튼의 실제 라벨에 의존하고 싶지 않은 경우

[HttpPost] 
public ActionResult NameAction(string btn) 
{ 
    if (btn == "page1") 
    { 
     // the page1 button was clicked 
    } 
    else if (btn == "page2") 
    { 
     // the page2 button was clicked 
    } 
    else if (btn == "AllPage") 
    { 
     // the AllPage button was clicked 
    } 

    ... 
} 

과 : 다음

<input type="submit" name="btn" value="page1" id="Page1"/> 
<input type="submit" name="btn" value="Page2" id="Page2"/> 
<input type="submit" name="btn" value="AllPage" id="AllPage"/> 

컨트롤러에서 값을 확인할 수 있습니다.


UPDATE :

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
관련 문제