将参数传递给控制器时遇到问题 以下是我的观点:
@model IEnumerable<WebApplication2.Models.Distributer>
@foreach (var item in Model) {
@Html.ActionLink("Edit", "Edit", new{id=item.DistributerID,user=item.Name })
}
我的控制器
public ActionResult Edit(int? id,string name)
{
ViewBag.name = name;
}
在编辑视图中,只显示名称。
我的路线图
routes.MapRoute(
name: "Route1",
url: "{controller}/{action}/{id}/{user}",
defaults: new { controller = "Distributers", action = "Edit", id = UrlParameter.Optional,user="" }
);
这里我发现控制器中的变量名是null。为了测试路由的工作原理。我从循环中拉出链接,即;
@model WebApplication2.Models.Distributer
@Html.ActionLink("Edit", "Edit",new{id=item.DistributerID,user=Model.Name})
这适用于Fine..string name = value(not null)
为什么会这样?
答案 0 :(得分:1)
您的路线和Html.ActionLink
来电中的参数为user
,但在您的操作方法签名中,它是name
。换句话说,user
正在传递,但你的动作方法对它没有任何作用。相反,永远不会提供name
参数。确保参数名称在任何地方都排成一行,然后你就变得很黄金了。