如何在不更改路由的情况下将参数从视图传递到控制器

时间:2019-06-28 18:40:52

标签: c# asp.net-mvc

我试图让一系列按钮调用相同的控制器功能,但是每个按钮都将不同的参数传递给控制器​​。

我一直在寻找一些东西,大多数解决方案都说更改我不想做的路由配置。我想知道是否有其他方法可以做到这一点,或者至少是一种标准做法。

<button class="button">Medium Voltage</button>
@Html.ActionLink("Medium Voltage", "GaugeView", "PSA")

[HttpGet]
public ActionResult GaugeView(string LineName)
{
//Do stuff based on which LineName was specified
    return View();
}

我还想隐藏传递给函数的字符串,但这不是必需的。

2 个答案:

答案 0 :(得分:1)

位于https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.html.linkextensions.actionlink?view=aspnet-mvc-5.2

处的文档
public static System.Web.Mvc.MvcHtmlString ActionLink (this System.Web.Mvc.HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes);

您需要注意 routeValues 参数。

答案 1 :(得分:1)

只需传递自定义值,如下所示:

@{
    var url = Url.Action("GaugeView", "PSA", new { LineName = "value"});
}

<button onclick="window.location.href='@url';">Medium Voltage</button>

@Html.ActionLink("Medium Voltage", "GaugeView", "PSA", new { LineName = "value"}, null)