簡體   English   中英

ASP.NET代碼中的頁面處理程序后面沒有被AJAX請求調用/找不到

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM