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)
{...}
在将 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)
{...}