2009-12-22 5 views
1

단추를 클릭 할 때 컨트롤러에서 메서드를 호출 할 수 있는지 알고 싶습니다.ASP.NET MVC에서 단추를 클릭하여 작업 방법 호출

보기가 home이고 뷰가로드되면 컨트롤러에서 Index 동작 메소드를 호출합니다. LoadData이라고하는 Button (HTML 또는 ASP.NET)이 있습니다. 버튼을 클릭하면 Home이라는 동일한보기에서 일부 데이터를로드해야합니다.

어떻게하면됩니까?

+1

@engineerachu 잘못된 용어를 편집했습니다. ASP.NET MVC에서는 ASP.NET 컨트롤 * 버튼 또는 기타 *를 사용하지 마십시오. 이것은 ASP.NET이 아닙니다. Home.aspx는 페이지가 아닙니다.보기입니다. 실제 페이지와 실제로 일치하지는 않습니다. 그것은 중요한 차이입니다. –

답변

1

을하는 데 도움이, 그것은에서 데이터를 얻기 위해 전화를 걸 JQuery와 또는 자바 스크립트를 포함하는 서버, AJAX 형식으로하고 싶다면. 하지만 가장 간단한 형태로 다음을 수행합니다.

<% Html.BeginForm("Action", "Controller"); %> 

<!--Form values in here--> 

<input type="submit" /> 

<% Html.EndForm(); %> 

조치 방법을 호출하고 포스트 백을 호출합니다. System.Web.Mvc.Ajax에는 AJAX 옵션을 사용하여 포스트 백 비동기를 수행하는 AJAXX 옵션을 사용할 수 있으며 설정하기 쉽습니다. 개인적으로 JQuery를 사용하는 경향이 있습니다.

HTH.

0

간단한 게시물을 사용하여 이렇게하려면 컨트롤러 메서드가있는 URL에 게시하면됩니다. "{컨트롤러}/{동작}/{ID}"당신의 Global.asax의 표준 경로 설정 다음과 같은 예를 들어

,

당신은 "LoadData"를라는 HomeController 클래스 내부의 컨트롤러 방법이있는 경우 의 URL에서 'D 액세스를 :

/홈/LoadData

이것은 당신이 당신의 형태 action 속성에 입력하려는 URL입니다.

다시 게시하지 않고 동일한 페이지에 데이터를로드하기 위해 AJAX 요청을 사용하여이 URL을 방문 할 수도 있습니다. 당신은 같은 것을 할 수있는 jQuery를 사용

:

$('#myForm').submit(function() { 
        $.post(
          this.action,{params}, 
          function(data){ // do something with return info } 
        } 
+0

그래, 내가 jQuery를 사용하여 그것을 할 수 있다는 것을 알았지 만, 먼저 asp.net으로 작업하려고하고있다가 jQuery로 이동해야한다. – superachu

0

을 당신은 목록보기를 채우는 쇼 빈보기 및 하나를 두 개의 작업을 정의합니다

public ViewResult Empty() 
    { 
     var products = productsRepository.Products.Where(x => x.ProductID == -1); 
     return View(); 
    } 

과 :

public ViewResult ListAll() 
    { 
     var products = productsRepository.Products; 
     return View("Empty", products); 
    } 

및보기 Empty.aspx

,
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<DomainModel.Entities.Product>>" %> 

<h2>Empty</h2> 

<table> 
    <tr> 
     <th></th> 
     <th> 
      ProductID 
     </th> 
     <th> 
      Name 
     </th> 
     <th> 
      Description 
     </th> 
     <th> 
      Price 
     </th> 
     <th> 
      Category 
     </th> 
     <th> 
      ImageMimeType 
     </th> 
     <th> 
      Error 
     </th> 
    </tr> 

<% if (Model != null) 
    { 
     foreach (var item in Model) 
     { %> 

    <tr> 
     <td> 
      <%= Html.ActionLink("Edit", "Edit", new { id = item.ProductID })%> | 
      <%= Html.ActionLink("Details", "Details", new { id = item.ProductID })%> 
     </td> 
     <td> 
      <%= Html.Encode(item.ProductID)%> 
     </td> 
     <td> 
      <%= Html.Encode(item.Name)%> 
     </td> 
     <td> 
      <%= Html.Encode(item.Description)%> 
     </td> 
     <td> 
      <%= Html.Encode(String.Format("{0:F}", item.Price))%> 
     </td> 
     <td> 
      <%= Html.Encode(item.Category)%> 
     </td> 
     <td> 
      <%= Html.Encode(item.ImageMimeType)%> 
     </td> 
     <td> 
      <%= Html.Encode(item.Error)%> 
     </td> 
    </tr> 

<% } 
    }%> 

</table> 

<p> 
    <%= Html.ActionLink("List Products", "ListAll")%> 

</p> 

희망이 버튼으로

+0

어떻게 작동합니까? "ListAll"링크를 클릭 할 때처럼 "ListAll"메서드가 실행되거나 무엇이 발생합니까? 그리고 "ViewResult"클래스는 무엇을 의미합니까? – superachu

+0

예 ListAll 링크를 클릭하면 ListAll 메서드가 호출됩니다. 조치 메소드가 그 중 하나를 리턴 할 수있는 결과의 일부가 있습니다. View입니다. ViewResult가 여기에서보기를 리턴합니다. Empty.aspx ViewModel과 같은 제품 목록이있는보기. 그 모습을 보니 MVC에 대해 아주 새롭기 때문에 http://www.asp.net/MVC를 살펴보고 위대한 viedos 및 자습서 ther을 찾아 ASP.NET MVC 포럼 (http : //forums.asp.net/1146.aspx) 내 대답이 충분하지 않은 경우 적절한 답변을 얻으려면. 도움이되기를 바랍니다. – ali62b

0

다음과 같이 컨트롤러를 작성해야합니다.

public class HomeController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult FetchData() 
    { 
     return Content("Some data..."); 
    } 

} 

다음과 같이 원하는 동작을 호출하십시오.

<% using (Ajax.BeginForm("FetchData", new AjaxOptions() { UpdateTargetId = "ContentPlaceHolder", HttpMethod = "Post" })) 
    { %> 
<div id="ContentPlaceHolder"></div> 
<input type="submit" value="Fetch Data" /> 
<% } %> 

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
관련 문제