如何使用 Razor Pages 在 C# 中传递数组
How do you pass an array in C# using Razor Pages
这是我的 viewtrainees.cshtml.cs 文件片段,其中包含数组代码:
public class viewTraineeModel : PageModel
{
public string[] traineeinfo { get; set; }
(...)
在我的 OnGet() 中:
string[] traineeinfo = new string[Convert.ToInt32(countnum)];
int i = 0;
while (trainees.Read())
{
traineeinfo[i] = trainees["t3_win"].ToString();
i++;
}
所以我的数组中的所有内容都已设置好,我什至在 .cs 文件中对其进行了测试。但是,当我传递数组或认为我将数组传递给视图时,它总是给我一个内部错误。
我已经尝试了我的 viewtrainees.cshtml 文件:
@Model.traineeinfo[0]
我得到 NullReferenceException:对象引用未设置到对象的实例。错误。
我的代码的 head 元素如下所示。
@page
@model T3_Landing.Pages.viewTraineeModel
@{
ViewData["Title"] = "View Trainees";
string[] traineeinfo = Model.traineeinfo as string[];
}
我已经尝试过重新初始化和不重新初始化字符串数组,如上所示。我真的很想让它工作。
请注意,我可以使用@Model.examplestring 传递常规字符串,但绝不能传递数组、列表或对象。
如果没有完整的上下文很难分辨,但看起来你是在 隐藏 class 成员,方法是在 OnGet()
中声明一个局部变量:
string[] traineeinfo = new string[Convert.ToInt32(countnum)];
这会创建一个名为 traineeinfo
的 local 变量,它隐藏了 class 属性 (如果是这种情况,我希望编译器警告).由于未设置 class 属性,您会在 Razor 页面中遇到空引用异常。
试试
traineeinfo = new string[Convert.ToInt32(countnum)];
我还建议使用驼峰式大小写以使其更易于阅读:
public string[] TraineeInfo { get; set; }
....
TraineeInfo = new string[Convert.ToInt32(countnum)];
在构造函数中,我认为你可以初始化字符串数组以防止空值。
public class viewTraineeModel : PageModel
{
public string[] traineeinfo { get; set; }
...
public viewTraineeModel()
{
traineeinfo=new string[0];
}
请提供屏幕截图或代码片段,说明您如何将数据从控制器方法端传递到视图。这将决定您是否首先在视图中拥有要使用的数据。
这是我的 viewtrainees.cshtml.cs 文件片段,其中包含数组代码:
public class viewTraineeModel : PageModel
{
public string[] traineeinfo { get; set; }
(...)
在我的 OnGet() 中:
string[] traineeinfo = new string[Convert.ToInt32(countnum)];
int i = 0;
while (trainees.Read())
{
traineeinfo[i] = trainees["t3_win"].ToString();
i++;
}
所以我的数组中的所有内容都已设置好,我什至在 .cs 文件中对其进行了测试。但是,当我传递数组或认为我将数组传递给视图时,它总是给我一个内部错误。
我已经尝试了我的 viewtrainees.cshtml 文件:
@Model.traineeinfo[0]
我得到 NullReferenceException:对象引用未设置到对象的实例。错误。
我的代码的 head 元素如下所示。
@page
@model T3_Landing.Pages.viewTraineeModel
@{
ViewData["Title"] = "View Trainees";
string[] traineeinfo = Model.traineeinfo as string[];
}
我已经尝试过重新初始化和不重新初始化字符串数组,如上所示。我真的很想让它工作。
请注意,我可以使用@Model.examplestring 传递常规字符串,但绝不能传递数组、列表或对象。
如果没有完整的上下文很难分辨,但看起来你是在 隐藏 class 成员,方法是在 OnGet()
中声明一个局部变量:
string[] traineeinfo = new string[Convert.ToInt32(countnum)];
这会创建一个名为 traineeinfo
的 local 变量,它隐藏了 class 属性 (如果是这种情况,我希望编译器警告).由于未设置 class 属性,您会在 Razor 页面中遇到空引用异常。
试试
traineeinfo = new string[Convert.ToInt32(countnum)];
我还建议使用驼峰式大小写以使其更易于阅读:
public string[] TraineeInfo { get; set; }
....
TraineeInfo = new string[Convert.ToInt32(countnum)];
在构造函数中,我认为你可以初始化字符串数组以防止空值。
public class viewTraineeModel : PageModel
{
public string[] traineeinfo { get; set; }
...
public viewTraineeModel()
{
traineeinfo=new string[0];
}
请提供屏幕截图或代码片段,说明您如何将数据从控制器方法端传递到视图。这将决定您是否首先在视图中拥有要使用的数据。