- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在学习 ASP.net Core 2.0,特别是 Razor 页面。我目前正在尝试了解部分 View 。
我有一个页面 ViewReport,它主要显示报告的数据并允许用户对其进行编辑。该模型如下所示:
namespace ReportControlPanel.Pages
{
public class ViewReportModel : PageModel
{
private readonly ReportControlPanel.Data.MainContext _context;
public ViewReportModel(ReportControlPanel.Data.MainContext context)
{
_context = context;
}
[BindProperty]
public Reports Reports { get; set; }
[BindProperty]
public ExecRptModel ExecRptModel { get; set; }
public async Task<IActionResult> OnGetAsync(int? id)
{
if (id == null)
{
return NotFound();
}
Reports = await _context.ReportContents
.SingleOrDefaultAsync(m => m.ID == id);
if (Reports == null)
{
return NotFound();
}
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Attach(Reports).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
}
return RedirectToPage("./Index");
}
}
}
我尝试创建一个局部 View ExecRpt,它将显示该报告的报告执行日志。该模型如下所示:
namespace ReportControlPanel.Pages
{
public class ExecRptModel
{
private readonly ReportControlPanel.Data.MainContext _context;
public ExecRptModel(ReportControlPanel.Data.MainContext context)
{
_context = context;
}
public IList<Logs> Logs { get; set; }
public async Task OnGetAsync()
{
IQueryable<Logs> LogsIQ = from i in _context.vwReportLogs select i;
Logs = await LogsIQ.ToListAsync();
}
}
}
我在 ViewReport.cshtml 中渲染局部 View 是这样的:
@await Html.PartialAsync("ExecRpt", Model.ExecRptModel)
我花了一段时间才没有出错。
然后我转到局部 View 的标记上。一旦我这样做将列表生成为 HTML:
@foreach (var item in Model.Logs)
{
<p>@Html.DisplayFor(i => item.ID)</p> //etc etc
}
我在调试时遇到了令人困惑的错误。
NullReferenceException: Object reference not set to an instance of an object.
错误是在我的部分 View 模型中突出显示 @foreach block 。
现在我知道日志模型应该返回数据负载,因为当不从局部 View 调用时它工作正常。
有人能指出我正确的方向吗?
最佳答案
您的类 ExecRptModel 包含一个名为 OnGetAsync() 的方法。这是 PageModel 派生类(即 Razor Pages 的代码隐藏)所采用的模式。它不适用于部分 View 。我确定您仍然可以像任何其他常规方法一样调用 OnGetAsync() ,但不要期望它会在首次呈现局部 View 时自动调用(尝试设置断点并查看是否有任何代码被执行).因此,我怀疑您遇到了空引用异常,因为 Logs 从未设置为任何内容,因此当您尝试在 View 中对其进行迭代时它为空。
我建议将获取日志的逻辑移动到 ExecRptModel 的构造函数中。或者,考虑使用 View Components ,这将允许您在呈现组件时执行更复杂的数据获取逻辑。
关于c# - Razor Pages - 部分 View 和从模型获取数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462999/
我是 PHP 新手。我在 WordPress 中遇到了这种语法.该代码的最后一行是做什么的? $page = $_SERVER['REQUEST_URI']; $page = str_replace(
为了清楚起见 - 这是我在这个问题中谈论的盒子的图片: 背景:我为客户构建了一个相对复杂的 WP 网站,它更像是一个 CMS 而不是博客,并且依赖于正在构建的页面层次结构。 (嗯,它们实际上是设置了
GitHub Help显示了 GitHub Pages 的以下选项: gh-pages 分行 主分支 master 分支/docs 文件夹 那么我们可以使用名称不是 master 或 gh-pages
我正在使用 AngularJS 框架为我的前端开发一个 Web 应用程序。对于我的登录页面,我必须阻止用户浏览除登录页面和注册之外的其他页面。但是我现在所做的代码也阻止用户导航到注册页面。以下是我的代
如果不将/1 粘贴到 url 上,是否可以改变 Zend_Paginator 来处理 URL?当前用户转到/aaron/studio。然后用户应该点击页面并开始访问 URL,例如:/aaron/stu
目前,我创建了一个可以生成PDF的系统。 PDF 中的数据来自 MySQL 数据库。现在,我像这样显示数据 第一页:仅显示一条数据。 第二页文字:将显示数据(每页最多 3 个数据) 说得更清楚一点,比
我正在尝试构建我的 ASP.NET MVC 4.5 项目以使用搜索引擎友好的 URL。我正在使用以下路由映射。 routes.MapRoute( name: "Default", ur
我为打印按钮使用了以下代码: Data.str = null; //Data.str = textBox24.Text.ToString(); string s = "select * from te
我们有一个带有两个 View 的单页应用程序(本质上是一个项目列表和所选项目的详细信息页面)。两个 View 都在单独的 html 文件中,我们使用 sammy.js 在页面之间进行转换/导航。在我们
(如果有人需要更多信息或更好的描述,请告诉我) 您好,我从这里添加了 viewPagerLibrary:http://viewpagerindicator.com/#introduction今天在我的
我是网页的新手,刚刚开始学习它。在创建新的 Razor 网站后,当我点击添加新项目时,我会看到可以添加的项目的多个选项。它们是: Layout Page(Razor) 这些类似于Master Page
我正在尝试使用 activeadmin 和 awesome_nested_set 创建页面模型。我一直在试图弄清楚如何使用正确的尾随 slug(例如/page1/page1subpage/a-subp
我正在尝试将 DotNetOpenAuth 与 Razor/MVC3 一起使用。大多数 DotNetOpenAuth HTML 助手都接受 System.Web.UI.Page 作为参数之一,使用 W
在我们的应用程序中,当我们在某些页面之间导航时,我们会在进入下一页之前发出服务器请求。发生这种情况时,当前页面上会显示加载图形。奇怪的是,在等待服务器响应完成时,下一页的样式会应用到当前页面。这会导致
我正在使用 ASP.NET Core 3.1 MVC 和 Razor 页面构建 Web 应用程序。 我是 Razor 页面的新手。 我使用上面的方法创建了一个基本应用程序。我想在应用程序启动时加载登录
我遇到了一个我似乎无法解释的问题。我在 Umbraco 中设置了一个主模板和 2 个子模板,但出现以下错误: Content controls have to be top-level control
我正在创建一个网络应用程序,允许用户选择他们当前的部门、他们将临时借调到哪个部门、他们正在执行的任务以及在任务上花费的时间。我需要写一些声明,根据他们当前部门的选择来确定他们所在的团队(当前的或新的)
当我导航到一个页面时,我得到了404错误页面,该页面说,在我刷新浏览器之前,没有包含此URL的页面,然后该页面才会显示。。我尝试使用@REACH/ROUTER来导航,而不是使用REACT-ROUTER
我正在使用 Html2Pdf 将一些 HTML 文件转换为 PDF。我还需要添加分页符来划分文档的各个部分。为此,我使用 标签。 我有以下 HTML 片段: ...
我正在使用另一个静态网站生成器,我希望能够将源文件(以markdown格式)以及生成的网站 checkin 到我的username.github.com存储库中。因此,很像Jekyll,但我没有使用J
我是一名优秀的程序员,十分优秀!