无法在剃刀页面中将模型值分配给参数

时间:2018-12-07 20:04:37

标签: c# asp.net-core asp.net-core-2.1 razor-pages

我有一个用于显示页面的剃刀页面代码。

public class RegisterModel : PageModel
{

    [BindProperty]
    public InputModel Input { get; set; }

    public string Test {get; set;}
    public class InputModel
    {        
        public List<SelectListItem> QList { get; set; }
    }

    public void OnGet()
    {
        Helper helper = new Helper(_logger, _context);
        var Test = helper.GetTestString();
        var saltyList = helper.GetAllApples();

        Input.QList = saltyList;
    }
}

变量saltyList具有15个值。但是我遇到一个错误:

  

{System.ExecutionEngineException:引发了类型为'System.ExecutionEngineException'的异常。}

我想念什么吗?无法在Get方法中分配值还是我遗漏了什么?是否存在在分配值之前没有将Input.Qlist初始化为任何东西的问题?测试工作正常,但InputModel分配却没有。

1 个答案:

答案 0 :(得分:2)

您需要在OnGet方法中分配Input的值。像这样:

public void OnGet()
{
    Helper helper = new Helper(_logger, _context);
    var Test = helper.GetTestString();
    var saltyList = helper.GetAllApples();

    Input = new InputModel
            {   
                QuestionList = questionList
            };
}

如果要像在操作中那样绑定Get中的值,则可能必须对Bindproperty使用SupportGet = true。

[BindProperty(SupportGet=true)]
public InputModel Input { get; set; }

您可以详细了解here