提问人:topcool 提问时间:11/13/2023 最后编辑:topcool 更新时间:11/13/2023 访问量:56
Asp.net 核心如何在没有 AJAX 调用的情况下在 Razor 页面中获取 JSON 值
Asp.net core how to get json value in razor page without ajax call
问:
我从服务器端收到一个字符串,我想访问其值。Ajax 调用未接收此字符串,我希望在 Razor Page 中具有其值。json
在上图中,从服务器端接收到两个值 和 。我怎样才能在剃须刀页面中?result
count
count
编辑
感谢那些回答的人。
我将详细解释这个问题。我在剃须刀页面中没有模型。实际上,我使用组件在网格中显示信息,在没有 Ajax 的情况下接收到 json 字符串。Syncfusion
public IActionResult FetchData([FromBody] DataManagerRequest dm)
{
IEnumerable DataSource = _userRepository.GetUserList();
int count = DataSource.Cast<UserListViewModel>().Count();
return dm.RequiresCounts ? Json(new { result = DataSource, count = count }) : Json(DataSource);
}
这是:cshtml
@{
ViewData["Title"] = "Student List";
}
<ejs-grid id="moshaver">
<e-data-manager url="/Users/FetchData" adaptor="UrlAdaptor"></e-data-manager>
<e-grid-columns>
<e-grid-column headerText="First Name" field="FirstName"></e-grid-column>
...
</e-grid-columns>
</ejs-grid>
表很好地绑定了,但我不知道如何获取值result
count
答:
0赞
Md Farid Uddin Kiron
11/13/2023
#1
我从服务器端收到一个 json 字符串,我想访问它 值。Ajax 调用未收到此字符串,我想要 它在 Razor Page 中的值。
好吧,如果你能分享你的json数据格式或你的剃刀页面结构是什么样子的,那就更好了。但是,根据你的方案和说明,可以通过在 Razor 页面中调用 JSON 数据来直接访问 json 数据。您将需要使用JsonConvert.DeserializeObject
如果 JSON 数据是模型或 ViewData 的一部分,则可以直接在 Razor 页面的标记中访问它。即使来自原始 json 数据,也可以通过以下方式访问。
例如,假设您有以下 json 原始数据
[
{\"key\": \"FirstName\", \"value\": \"Kiron\" },
{ \"key\": \"LastName\", \"value\": \"Md Farid\" }
]
为了在 razor 页面中调用上面的 json 原始数据,您可以这样做:
cshtml.cs:
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
public string RazorPageRawJsonData { get; set; }
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public void OnGet()
{
RazorPageRawJsonData = "[ { \"key\": \"FirstName\", \"value\": \"Kiron\" }, { \"key\": \"LastName\", \"value\": \"Md Farid\" }]";
}
}
cshtml:
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<p>RAW JSON From cshtml.cs</p>
<pre>@Model.RazorPageRawJsonData</pre>
<p>Parsed JSON value:</p>
@{
int count = 0;
var jsonData = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(Model.RazorPageRawJsonData);
foreach (var item in jsonData)
{
var key = item["key"];
var value = item["value"];
count = jsonData.Count;
<p>Key: @key, Value: @value</p>
}
<p> Count: @count</p>
}
注意:我使用的是原始 json,所以我将数据类型保持为动态,但您可以根据需要保留类型,无论是强类型类还是您需要的任何类型。
输出:
注意:如果您想在剃须刀页面上了解更多信息,请参阅此官方文档。
评论
0赞
topcool
11/13/2023
谢谢你的回答。我编辑了问题
0赞
Md Farid Uddin Kiron
11/14/2023
感谢您的更新,为什么不直接在 tempdata 或模型属性值中传递计数值呢?
评论
@{ var x = @Model.JsonVariable }