很抱歉打扰你们,但我需要帮助从实体框架获取我的信息。我不知道我错过了什么。
我正在使用 Razor 页面。我已经运行了我的页面,我在本地窗口中看到了所有值。我可以看到我可以为我的一个订单想象的每个字段。所以,这部分我没有任何问题。
当我返回页面时出现问题:
public async Task<IActionResult> OnGetAsync()
{
string id = TempData["id"]?.ToString();
if (id == null)
{
return NotFound();
}
var x = await _context.dbTable.SingleOrDefaultAsync(e => e.order_id == id);
if (x != null)
{
return Page();
}
return NotFound();
}
我完全看到了我的临时数据,但是当页面返回时,我的模型中的所有内容都变为空。我什至无法做一个简单的
@Html.DisplayFor(model => model.id)
来查看它是否显示。
我不是在寻求解决方案,我只是想知道要寻找什么。我一直在谷歌上搜索 YouTube、ChatGPT 和 Gemini,但我遗漏了一些东西。
如果有帮助,我可以在
ViewData
中看到我的值,如果我查看Model.ViewData[0]
,然后打开它,我会看到技术上返回的整个查询。只是模型变成了null而已。
根据你的代码,你的id和X对象内的所有方法在方法完全排除后无法访问。
如果您想将一些值从 razor 页面模型类传递到 razor 视图,您应该首先在类中设置模型对象或属性,然后为其设置值。
例如,如果你想将 id 传递给 razor 视图。
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
//create the property to store the value
public string? id { get; set; }
//create the property to store the value
public Movie Movie { get; set; } = default!;
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public async Task<IActionResult> OnGetAsync()
{
//set the value
// id = TempData["id"]?.ToString();
id = "test";
//Movie = await _context.dbTable.SingleOrDefaultAsync(e => e.order_id == id);
//set the value for testing
Movie = new Movie { Id = 1, Name = "test1" };
return Page();
}
}
public class Movie
{
public int Id { get; set; }
public string Name { get; set; }
}
剃须刀页面:
id:
@Html.DisplayFor(modelItem => Model.id)
<hr />
name : @Html.DisplayFor(modelItem => Model.Movie.Name)
结果: