将常量值和变量(输入)文本从View传递给Controller

时间:2012-07-12 20:07:36

标签: asp.net-mvc asp.net-mvc-3 razor

我是ASP.NET MVC的新手,并且仍然习惯了一些概念。 我理解为了将View中的文本框的值传递回Controller,我可以使用Html.BeginForm并为文本框提供与Controller Action中相应参数相同的名称。

这是我的情况:我有2个按钮。我希望他们在Controller中调用相同的Action。我希望它们都传递文本框的值(即“searchText”)。 但是,我希望其中一个按钮为参数isQuickJump传递“false”,我希望另一个按钮为参数isQuickJump传递“true”。

这是我的观点:

@using (Html.BeginForm("SearchResults", "Search", FormMethod.Get))  {
<div id="logo" class="centered">
    <a href="SearchResults">
        <img alt="Search" src="../../Content/themes/base/images/Search.jpg" />
    </a>
</div>

<div id="searchBox" class="centered">
    @Html.TextBox("searchText", null, new { @class = "searchTextBox" })
</div>

<div id="buttons" class="centered">
    <input type="submit" id="searchButton" value="Search" class="inputBtn"  />
    @Html.ActionLink("Quick Jump", "SearchResults", "Search", new { isQuickJump = true }, new { @class = "btn" })
</div>

}

控制器:

public ActionResult SearchResults(string searchText, int? page, int? size, bool? isQuickJump, GridSortOptions sort)
    {
        var items = GetSearchGrid(searchText, page, size, sort);

        if (Request.IsAjaxRequest())
            return PartialView("_SearchResultsGrid", items);

        return View(items);
    }

有关如何执行此操作的任何建议吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

只需使用具有相同名称和不同值的2个提交按钮:

<div id="buttons" class="centered">
    <button type="submit" name="isQuickJump" value="false">Search</button>
    <button type="submit" name="isQuickJump" value="true">Quick Jump</button>
</div>

根据单击的按钮,相应的值将发送到服务器以获取isQuickJump参数。由于两者都是提交按钮,它们还会将所有其他输入字段数据提交给服务器(与您用作第二个按钮的锚点不同)。

相关问题