ActionResult 中的参数

Parameters in ActionResult

在将 Vanilla MVC 项目迁移到 Vanilla Umbraco 项目时,我遇到了几个问题。其中之一是带有查询参数,并将它们传输到我的索引。

工作 MVC 项目的旧 ActionResult:

public ActionResult Index(int value1, int value2, bool value3 = false)
{...}

新的 ActionResult,在 Vanilla Umbraco 项目中工作

public override ActionResult Index(RenderModel model)
{...}

但我需要原始项目的参数(来自查询字符串)。 我尝试简单地添加它们:

public override ActionResult Index(RenderModel model, int value1, int value2, bool value3 = false)
{...}

但是当我执行后者时,出现错误 'Controller.Index(RenderModel, int, int, bool): no suitable method found to override'

我错过了什么?

您不能将这些值作为参数传递。您应该改为从查询字符串中提取它们。

public override ActionResult Index(RenderModel model)
{
     var value1 = Request["value1"];
     var value2 = Request["value2"];
     var value3 = Request["value3"];
     ...
}

该错误意味着并非所有参数都按应有的方式加载。只需让它们都接受 null 作为值,并检查你在调用过程中得到了什么。

public override ActionResult Index(RenderModel model, int? value1, int? value2, bool value3 = false)
{...}