ASP.NET 使用 ReactJS 的 Web API 无法从查询中获取页面
ASP.NET Web API with ReactJS can't get page from query
我有一个带有 ASP.NET Web API 的 React 应用程序,我想从查询字符串中获取页码并进行一些逻辑处理,但是当我转到下一页时,控制器中的 page 变量始终为 0,无论我是否具有 FromQuery 属性。
这是我的控制器:
[HttpGet]
public async Task<JsonResult> AllContacts([FromQuery(Name = "page")] int page)
{
var result = await _contactsService.GetAllContactsAsync(page);
return new JsonResult(result);
}
这里我导航到页面,这个功能在联系人组件中,它描述了我如何在 App.js:
中路由到他
const handlePaging = (params) => {
navigate(`/contacts?page=${params + 1}`);
getContacts();
};
这里是 getContacts 函数的实现:
const getContacts = async () => {
const request = await requester('https://localhost:7082/api/contacts', methods.get);
const response = await request.json();
setContacts(response);
};
这是我的 App.js:
function App() {
return (
<BrowserRouter>
<div className="app">
<Routes>
<Route path='/' element={<Contact />} />
<Route path='/details/:id' element={<Details />} />
</Routes>
</div>
</BrowserRouter>
);
}
这是 DataGrid:
<DataGrid
id={() => searchTerm === '' ? array.map((contact) => contact.id) : searchedContacts.map((contact) => contact.id)}
rows={searchTerm === '' ? array : searchedContacts}
sx={{
'.MuiDataGrid-columnHeaderTitle': {
fontWeight: 'bold',
},
'.MuiDataGrid-columnHeaders': {
backgroundColor: '#d3d3d3'
},
'.MuiDataGrid-row': {
maxHeight: '51px !important',
minHeight: '51px !important'
},
'.MuiDataGrid-virtualScroller': {
overflow: 'hidden'
}
}}
onPageChange={handlePaging}
columns={columns}
pageSize={10}
rowsPerPageOptions={[10]}
checkboxSelection
onRowDoubleClick={e => navigateToDetails(e)}
onSelectionModelChange={e => setEntry(e)}
/>
请帮助我,我将不胜感激。
您对 API 的请求实际上没有 page
查询参数,因此,控制器方法的 identically-named page
参数的值将始终具有默认值即。在这种情况下为 0。
我有一个带有 ASP.NET Web API 的 React 应用程序,我想从查询字符串中获取页码并进行一些逻辑处理,但是当我转到下一页时,控制器中的 page 变量始终为 0,无论我是否具有 FromQuery 属性。
这是我的控制器:
[HttpGet]
public async Task<JsonResult> AllContacts([FromQuery(Name = "page")] int page)
{
var result = await _contactsService.GetAllContactsAsync(page);
return new JsonResult(result);
}
这里我导航到页面,这个功能在联系人组件中,它描述了我如何在 App.js:
中路由到他const handlePaging = (params) => {
navigate(`/contacts?page=${params + 1}`);
getContacts();
};
这里是 getContacts 函数的实现:
const getContacts = async () => {
const request = await requester('https://localhost:7082/api/contacts', methods.get);
const response = await request.json();
setContacts(response);
};
这是我的 App.js:
function App() {
return (
<BrowserRouter>
<div className="app">
<Routes>
<Route path='/' element={<Contact />} />
<Route path='/details/:id' element={<Details />} />
</Routes>
</div>
</BrowserRouter>
);
}
这是 DataGrid:
<DataGrid
id={() => searchTerm === '' ? array.map((contact) => contact.id) : searchedContacts.map((contact) => contact.id)}
rows={searchTerm === '' ? array : searchedContacts}
sx={{
'.MuiDataGrid-columnHeaderTitle': {
fontWeight: 'bold',
},
'.MuiDataGrid-columnHeaders': {
backgroundColor: '#d3d3d3'
},
'.MuiDataGrid-row': {
maxHeight: '51px !important',
minHeight: '51px !important'
},
'.MuiDataGrid-virtualScroller': {
overflow: 'hidden'
}
}}
onPageChange={handlePaging}
columns={columns}
pageSize={10}
rowsPerPageOptions={[10]}
checkboxSelection
onRowDoubleClick={e => navigateToDetails(e)}
onSelectionModelChange={e => setEntry(e)}
/>
请帮助我,我将不胜感激。
您对 API 的请求实际上没有 page
查询参数,因此,控制器方法的 identically-named page
参数的值将始终具有默认值即。在这种情况下为 0。