如何通过actionlink将多个参数传递给控制器​​并在视图中输出?

时间:2012-09-07 18:14:02

标签: asp.net-mvc

我是asp.net mvc3的新手,我很难搞清楚这一点。 我有一个actionlink,我想包含一个参数并传递给我的索引方法

@Html.ActionLink("Click here", "Index", "Customer", new { customerid = item.custId}, new {       @class = "partiallink" })

我如何从控制器接收它?考虑到我的Index Action方法中没有方法参数,以及如何在视图中输出参数?

我想我想说的是将它传递给某个控制器方法并仍然返回带有参数的Index页面

3 个答案:

答案 0 :(得分:1)

您传递给操作链接的所有参数都成为查询字符串参数,即

@Html.ActionLink("Click here", "Index", "Customer", new { customerid = 111, someOtherParameter = 222, anotherParameter = 333}

转移到链接/客户/索引?customerid = 111& someOtherParameter = 222& anotherParameter = 333。 您可以通过Request.QueryString属性在控制器中获取它,或者如果Index操作的签名是:

,则可以通过模型绑定器进行映射
ActionResult Index(int? customerid, int? someOtherParameter, string anotherParameter)
{
    .....
}

答案 1 :(得分:0)

您是说,在您的客户控制器上,您希望能够将无值或customerid传递给您的索引操作,该操作会返回索引页面吗?

假设您没有更改默认路由,可以更改控制器操作以接受可为空的int,然后根据customerid是否为null来获取模型:

    public ActionResult Index(int? customerid)
    {
        YourModelType model;
        if (customerid == null)
        {
            model = /* however you get your model when you don't have an id */
        }
        else
        {
            model = /* however you get your model when you have an id */;
        }

        return View("Index", model);
    }

您还需要更新路由引擎以接受可选的customerid参数:

        routes.MapRoute(
            "Customer", // Route name
            "Customer/{action}/{customerid}", // URL with parameters
            new { controller = "Customer", action = "Index", customerid = UrlParameter.Optional } // Parameter defaults
        );

答案 2 :(得分:0)

您可以使用类似于下面的示例

@Html.ActionLink("Click here", "Index", "Customer", new { ID= 111,UID =222}, null)

并在控制器中

[HttpGet,Route("Index/{ID}/{UID}")]
        public ActionResult EventView(int ID,int UID)
        {
        }

请参考下面的链接,它很有用

Query string not working while using attribute routing