【问题标题】:What's the deal with values parameter in ASP.NET MVC?ASP.NET MVC 中的 values 参数是怎么回事?
【发布时间】:2009-01-15 13:44:00
【问题描述】:

我看到有Controller.RedirectToAction(string actionName, string controllerName, object values),但我从来没有让 values 参数起作用。考虑我想在控制器中执行以下重载操作:

public ActionResult Read() 
{
    return RedirectToAction("ReadPage", "MyController", 1);
}

public ActionResult ReadPage(int page)
{
    // Doing the actual stuff 
}

…当我尝试转到 Read 操作时出现异常。 Html.ActionLink 也是如此。

那是怎么回事?你可以在 MVC 中完全不用浏览器就将值传递给控制器​​吗?

【问题讨论】:

  • 请注意我的更新,这里不需要 2 种方法...

标签: c# asp.net-mvc


【解决方案1】:

尝试使用:

return RedirectToAction("ReadPage", "MyController", new {page = 1});

它需要知道你指的是哪个参数(在更一般的情况下,你可以有很多参数),它可以从上面推断出来。

匿名类型模式(上图)在 ASP.NET MVC 中非常常见,尽管在许多情况下 我相信你也可以给它一个填充字典来表示相同的意思。

另外——在这种情况下不需要两个动作;您可以设置路线以提供默认值;这是我之前发布的一些:

    public ActionResult Search(string query, int startIndex, int pageSize)
    {
        ...
    }

有路线:

    routes.MapRoute("Search", "Search/{query}/{startIndex}",
             new {
                controller = "Home", action = "Search",
                startIndex = 0, pageSize = 20
             });

现在,如果我不提供 startIndex,它会默认将 0 传递给我的搜索。所以我可以导航到“/Foo”进行默认搜索,或者导航到“/Foo/100”从 100 开始进行相同的搜索。或者,参数可以在查询字符串上,并且仍然会使用来自的值默认匿名类型。

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2016-02-24
    • 2017-10-20
    • 2013-07-06
    相关资源
    最近更新 更多