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

时间:2016-02-15 07:01:34

标签: c# asp.net asp.net-mvc

这是_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发回给控制器并保留现有网址(例如:www.myurl.com/propertyReport?userID=123&from=20150201&pageSize=12)< / p>

更新

根据Stephen Muecke和Ivan的评论推荐,我添加了一个Ajax.beginForm来包围按钮:

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

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

SharedController:

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

1 个答案:

答案 0 :(得分:0)

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

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

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