Razor Pages OnGet 参数

Razor Pages OnGet Parameter

这是一个后续问题:

问题是用户名字符串从未进入 OnGet 方法。

我知道我做错了 - 因此我寻求帮助是因为我不确定该怎么做。

我的问题是我的 Index.cshtml 页面需要调用在启动时初始化的 OnGet() 方法。 (上面的link只是详细说明了如何通过锚点传递参数)。

我创建了一个 public 字符串 属性 用户名。

然后在我的 Index.cshtml 文件中,我在声明模型之前定义了 属性(之后我也尝试过)。

Index.cshtml.cs

public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;

        public List<DisplayJob> Jobs { get; set; }
        public string Username { get; set; }

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }

        public void OnGet()
        {
            Console.WriteLine("username: " + Username);
            Jobs = DisplayJobService.GetListDisplayJobs(-1, 100, "", "", Username);
        }
    }

Index.cshtml

@page
@{
    ViewData["Username"] = "s32xckJ1";
    Model.Username = "s32xckJ1";
}
@model IndexModel
@{

    ViewData["Title"] = "Home page";
}
<p>Jobs Count: @Model.Jobs.Count()</p>

正如您所发现的,就路由而言。

@page "{datestart}/{dateend}/{referenceid:int=0}/{client?}"

这可能是一种奇怪的方式,但您可以使用 AddPageRoute 方法添加附加根。

services.AddMvc().AddRazorPagesOptions(options =>
{
   options.Conventions.AddPageRoute("/details", "{datestart}/{dateend}/{client?}");
});

使用属性 [httpget] 通过视图模型获取参数。 发送到 razor cshtml 可以使用 viewbag。