如何使用Razor页面在C#中传递数组

这是我的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传递常规字符串,但不能传递数组,列表或对象。

iseehr 回答:如何使用Razor页面在C#中传递数组

没有完整的上下文很难说,但看起来您是在OnGet()内声明局部变量来隐藏该类成员:

string[] traineeinfo = new string[Convert.ToInt32(countnum)];

这将创建一个名为traineeinfo local 变量,该变量隐藏了类属性(如果是这种情况,我希望得到编译器警告)。由于未设置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];
}

,

请放一个屏幕截图或代码片段,以说明如何将数据从控制器方法端传递到视图。首先,它将确定您是否要在视图中使用要处理的数据。

本文链接:https://www.f2er.com/3151971.html

大家都在问