我是asp.net mvc3的新手,我很难搞清楚这一点。 我有一个actionlink,我想包含一个参数并传递给我的索引方法
@Html.ActionLink("Click here", "Index", "Customer", new { customerid = item.custId}, new { @class = "partiallink" })
我如何从控制器接收它?考虑到我的Index Action方法中没有方法参数,以及如何在视图中输出参数?
我想我想说的是将它传递给某个控制器方法并仍然返回带有参数的Index页面
答案 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)
{
}
请参考下面的链接,它很有用