단추를 클릭 할 때 컨트롤러에서 메서드를 호출 할 수 있는지 알고 싶습니다.ASP.NET MVC에서 단추를 클릭하여 작업 방법 호출
보기가 home
이고 뷰가로드되면 컨트롤러에서 Index
동작 메소드를 호출합니다. LoadData
이라고하는 Button
(HTML 또는 ASP.NET)이 있습니다. 버튼을 클릭하면 Home
이라는 동일한보기에서 일부 데이터를로드해야합니다.
어떻게하면됩니까?
단추를 클릭 할 때 컨트롤러에서 메서드를 호출 할 수 있는지 알고 싶습니다.ASP.NET MVC에서 단추를 클릭하여 작업 방법 호출
보기가 home
이고 뷰가로드되면 컨트롤러에서 Index
동작 메소드를 호출합니다. LoadData
이라고하는 Button
(HTML 또는 ASP.NET)이 있습니다. 버튼을 클릭하면 Home
이라는 동일한보기에서 일부 데이터를로드해야합니다.
어떻게하면됩니까?
을하는 데 도움이, 그것은에서 데이터를 얻기 위해 전화를 걸 JQuery와 또는 자바 스크립트를 포함하는 서버, AJAX 형식으로하고 싶다면. 하지만 가장 간단한 형태로 다음을 수행합니다.
<% Html.BeginForm("Action", "Controller"); %>
<!--Form values in here-->
<input type="submit" />
<% Html.EndForm(); %>
조치 방법을 호출하고 포스트 백을 호출합니다. System.Web.Mvc.Ajax에는 AJAX 옵션을 사용하여 포스트 백 비동기를 수행하는 AJAXX 옵션을 사용할 수 있으며 설정하기 쉽습니다. 개인적으로 JQuery를 사용하는 경향이 있습니다.
HTH.
간단한 게시물을 사용하여 이렇게하려면 컨트롤러 메서드가있는 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 }
}
그래, 내가 jQuery를 사용하여 그것을 할 수 있다는 것을 알았지 만, 먼저 asp.net으로 작업하려고하고있다가 jQuery로 이동해야한다. – superachu
을 당신은 목록보기를 채우는 쇼 빈보기 및 하나를 두 개의 작업을 정의합니다
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>
희망이 버튼으로
어떻게 작동합니까? "ListAll"링크를 클릭 할 때처럼 "ListAll"메서드가 실행되거나 무엇이 발생합니까? 그리고 "ViewResult"클래스는 무엇을 의미합니까? – superachu
예 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
다음과 같이 컨트롤러를 작성해야합니다.
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>
@engineerachu 잘못된 용어를 편집했습니다. ASP.NET MVC에서는 ASP.NET 컨트롤 * 버튼 또는 기타 *를 사용하지 마십시오. 이것은 ASP.NET이 아닙니다. Home.aspx는 페이지가 아닙니다.보기입니다. 실제 페이지와 실제로 일치하지는 않습니다. 그것은 중요한 차이입니다. –