MVC 如何将_layout文件中的单个值发布到控制器

本文关键字:单个值 控制器 文件 layout MVC | 更新日期: 2023-09-27 18:34:33

这是_layout文件:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    ...
    <div class="container body-content">
        @RenderBody()
        <input type="submit" name="pageSize" value="12" />
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - Test co. ltd.</p>
        </footer>
    </div>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    @RenderSection("scripts", required: false)
</body>
</html>

正如你所看到的,我添加了一个名为pageSize的输入,我需要做的是当用户单击pageSize按钮时,"12"将被发布到控制器,我正在考虑通过查询字符串发布"12"(i.e. when the user clicks the button, the url will be changed to www.myurl.com/propertyReport?pageSize=12)

目前,该按钮显示在页面中,但单击该按钮时没有任何操作。如何向按钮添加操作,以便将"12"传递给控制器?

请注意,我不想在单击按钮后重定向到另一个页面,我想将 12 发布回控制器并保留现有 url(即像这样:www.myurl.com/propertyReport?userID=123&from=20150201&pageSize=12 (


更新:

根据Stephen Muecke和Ivan的评论建议,我添加了一个Ajax.beginForm来环绕按钮:

    @using (Ajax.BeginForm("Options", "Shared", new AjaxOptions() { HttpMethod = "POST" }))
    {
        <input type="submit" name="pageSize" value="12" />
    }

如何命中共享控制器中的选项方法。所以现在我能够从查询字符串中获取"12",但现在的问题是:我应该在 ActionResult 中返回什么,以便我可以保持在同一页面上?

共享控制器:

public ActionResult Options(string pageSize)
{
    //Do stuff with the pageSize
    return //what should I return here?
}

MVC 如何将_layout文件中的单个值发布到控制器

我改成了jquery帖子,现在它解决了问题

<script type="text/javascript">
    function changePageSize(s) {
        $.post('/Shared/Options?pageSize=' + s, function (data, status) {
            window.location.reload();
        });
    }
</script>

在_Layout文件中添加了此功能,并在单击按钮时调用此函数。