[英]Page handler in ASP.NET code behind not getting called/not found by AJAX request
我在ASP.NET Core應用程序的頁面(頁面)上有一個命名頁面處理程序方法,只需單擊select2選項即可調用該方法。 但是后面的代碼中的方法沒有被調用。 相反,ajax請求返回的結果只是頁面的完整html。 應用程序中的另一個頁面幾乎具有完全相同的代碼。 並且工作正常(索引)。 出於某種原因,page.js中的ajax請求可以查看並使用Index.cshtml.cs中的處理程序。
我試過了:
- 更改方法和網址的名稱
- 將網址格式從'/?handler = ...'更改為'/ Page / OnGetCampaign'並使用方法'OnGetCampaign'的全名,但這些會導致404錯誤。
- 在不同的瀏覽器中運行應用程序
page.cshtml.cs中的處理程序:
public JsonResult OnGetCampaign(string filterBy)
{
var res = context.dbset.AsNoTracking()
.ToListAsync().Result.FindAll(x => x.advertiser == filterBy);
return new JsonResult(res);
}
page.js中的AJAX請求:
$('#selector').on('select2:select', function (e) {
var selId = e.params.data.text;
console.log(selId);
$.ajax({
type: "GET",
url: '/?handler=Campaign',
data: {
FilterBy: selId
}
}).done(function (result) {
console.log(result);
for (var i = 0; i < result.length; i++) {
//appending data to a table
}
});
});
結果應該是一個簡單的數組,但是如果ajax請求url是'url:/?handler =(method)'格式,那么結果就是一堆html,如果它在'url:/ Page / OnGet(方法)中'格式化失敗,出現404錯誤。
編輯:這是我的項目中的文件夾結構:
Solution 'project'
-\project
-\wwwroot
-css
-js
-images...
-\Pages
-\Shared
-_Layout.cshtml
-...
-Index.cshtml
-Index.cshtml.cs
-Page.cshtml
-Page.cshtml.cs
-other pages...
Classes.cs
DbContexts.cs
Startup.cs
Program.cs
如果處理程序在視圖的同一控制器中實現,則請求應為:
$.ajax({
type: "GET",
url: 'OnGetCampaign',
data: {
FilterBy: selId
}
})
編輯 :略有不同但值得一試,在Page.cshtml
:
$.ajax({
type: "GET",
url: '/page/OnGetCampaign/' + selId
})
在你的控制器中:
[Route("page")]
public class PageController : Controller
{
[Route("OnGetCampaign/{selId}")]
public IActionResult Demo2(string selId)
{
return new JsonResult("Hello " + selId);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.