0

我对 asp.net mvc3 还很陌生,我很难弄清楚这一点。我有一个动作链接,我想包含一个参数并传递给我的索引方法

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

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

我想我想说的是把它传递给一些控制器方法,并且仍然返回带有参数的索引页面

4

3 回答 3

1

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

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

转移到链接/Customer/Index?customerid=111&someOtherParameter=222&anotherParameter=333。如果 Index 操作的签名是:您可以通过属性在控制器中获取它Request.QueryString或通过模型绑定器映射它:

ActionResult Index(int? customerid, int? someOtherParameter, string anotherParameter)
{
    .....
}
于 2012-09-07T18:30:57.460 回答
0

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

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

    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
        );
于 2012-09-07T18:27:23.050 回答
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)
        {
        }

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

使用属性路由时查询字符串不起作用

于 2017-05-03T10:54:14.887 回答