【问题标题】:Is it possible to pass a parameter through @Html.ActionLink? [duplicate]是否可以通过@Html.ActionLink 传递参数? [复制]
【发布时间】:2019-01-17 08:52:39
【问题描述】:

我需要使用相同的视图,但根据用户选择的按钮在表格中显示的不同数据。我想通过 html.actionlink 传递一个参数来做到这一点。

这是我目前在视图中的内容

 <li id="liOpenJobs">@Html.ActionLink("All Jobs", "AllJobs", "AdminJobs", new { filter = "All" })</li>

控制器

        [HttpGet]
    public ActionResult AllJobs(string filter)
    {
        if (PCSSession.Current.IsAuthenticated)
        {
            var jobs = new JobRepository();
            var model = new JobsHistoryViewModel();
            if(filter == "All")
            {
                model.jobHistory = jobs.GetAllJobs("alljobs");
            }


            return View(model);
        }

        return RedirectToAction("AdminLogin", "AdminLogin");

    }

【问题讨论】:

    标签: asp.net-mvc view parameters html.actionlink


    【解决方案1】:

    使用ActionLink 辅助方法的this overload

    public static MvcHtmlString ActionLink(
        this HtmlHelper htmlHelper,
        string linkText,
        string actionName,
        string controllerName,
        RouteValueDictionary routeValues,
        IDictionary<string, Object> htmlAttributes
    )
    

    第四个参数是路由值对象,它将用于为锚标记的href 属性值生成查询字符串项。第五个参数是htmlAttributes。如果您没有,只需传递null

    @Html.ActionLink("All Jobs", "AllJobs", "AdminJobs", new { filter = "All" }, null)
    @Html.ActionLink("Some Jobs", "AllJobs", "AdminJobs", new { filter = "some"}, null)
    

    这将为带有 href 值的锚标记生成 HTML 标记,如下所示

    /AdminJobs/AllJobs?filter=All/AdminJobs/AllJobs?filter=some

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多