Ajax를 통해 MVC 작업을 호출하는 데 실패했습니다. 내가 이렇게하면 다음과 같은 오류가 발생합니다ASP.NET MVC에서 AJAX를 통해 POST 작업 메서드를 올바르게 호출하는 방법
HttpException: A public action method 'Find' was not found on controller 'MyProject.Controllers.LoanController'.
내가 호출을 시도하고있어 액션 메소드의 서명을 다음
[Route("Loan/Find/{loanNumber:int}")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
[ActionName("Find")]
[AllowAnonymous]
public ActionResult Find(int loanNumber)
{
var model = new LoanStatusModel
{
Record = Repository.GetRecord(loanNumber),
User = this.SecurityPrincipal
};
return this.PartialView("LoanStatusSearchResult", model);
}
다음대로 호출을 시도 뷰 코드 :
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
}
:
@using(Ajax.BeginForm("Find", new AjaxOptions
{
HttpMethod = "POST",
AllowCache = false,
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "ajaxTarget",
LoadingElementId="loader"
}))
{
<fieldset>
<div class="col-sm-3">
<input type="text"
id="loanNumber"
name="loanNumber"
value="@Model.LoanNumber"
class="form-control"
minlength="8"
maxlength="10"/>
</div>
<div class="col-sm-7">
<input type="submit"
value="Search"
class="btn btn-primary"/>
</div>
</div>
</fieldset>
}
<div id="loader" style="display:none">
Working, please wait...
</div>
<div id="ajaxTarget">
</div>
이
내 RouteConfig.cs의 내용입니다3210Fidler는 루트에 대한 요청으로 HTTP 401 Not Authorized가 발생한다고보고합니다. 원래 익명 액세스를 사용하지 않도록 설정된 인트라넷 사이트이므로이 종류가 적합합니다. 그러나 익명 액세스를 사용할 수 있으며 오류가 계속 발생합니다.
- 나는 익명 요청을 허용하도록 IIS를 변경하고 서버를 다시 시작 : 이 문제를 해결하려면, 나는 모든 인터넷 (특히에 StackOverflow)을 통해 검색 한 후 다음과 같은 노력했다. 이것은 결과에 아무런 영향을 미치지 않았습니다.
- 원래 동작 방법은
HttpPostAttribute
으로 장식되었습니다.AcceptVerbs
을 사용하도록 변경하면 결과에 아무런 영향을 미치지 않습니다. - 나는이 방법에
AllowAnonymous
을 추가했으며 결과에 아무런 영향을 미치지 않았습니다.
어떻게이 문제를 해결할 수 있습니까? 해결할 수 있습니까? 어떤 다른 정보를 제공해야합니까?
OH. 나의. 하나님. 나는 그것을 놓쳤다는 것을 믿을 수 없다. (epicfacepalm) 내가 간과 한 횟수를 믿지 않을 것이다. 생명의 은인, 친구. –
커스텀 아약스 솔루션으로 답변을 업데이트했습니다. 환호 :) – Shyju
나는 실제로 길을 고쳤다./Loan/Status가되고 본문에 양식 데이터가 전달되기를 원합니다. 올드 스쿨 URL은 여기 주위에 없습니다. –