如何在c#mvc控制器中访问input type = submit value

时间:2015-04-14 19:48:29

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

我正在开发一个C#MVC应用程序。我有一个索引动作,可以兼作GET和POST动作。在视图中,用户可以按项目名称或编号(或任何其他不同的选项)进行搜索。

<tr>
        <th>
            Find by Name:
        </th>
        <th>
            @Html.TextBox("NameSearchString", ViewBag.CurrentNameFilter as string)
        </th>
        <th>
            <input type="submit" value="Search By Name" name="searchButton" />
        </th>
    </tr>
    <tr>
        <td></td>
    </tr>
    <tr>
        <td></td>
    </tr>
    <tr>
        <th>
            Find by Project Number:
        </th>
        <th>
            @Html.TextBox("NumberSearchString", ViewBag.CurrentNumberFilter as string)
        </th>
        <th>
            <input type="submit" value="Search By Number" name="searchByNumber" />
        </th>
    </tr>

是否可以检查&#34; searchButton&#34;的价值?在Controller中通过Request.Form?

在我目前拥有的控制器中:

// GET: PROJECTS
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Index(string sortOrder, string currentNameFilter, string currentNumberFilter, string nameSearchString, string numberSearchString, int? page, 
        string searchButton, bool? activeProjectsOnly = true)
    {

当我点击&#34;按姓名搜索&#34;按钮,在控制器中&#34; searchButton&#34; string =&#34;按名称搜索&#34;。这是预期的,但为什么我无法使用以下方式检查它:

this.HttpContext.Request.Form["searchButton"]

这是MVC级别:

<dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc"  />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

[AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Index(string sortOrder, string currentNameFilter, string currentNumberFilter, string nameSearchString, string numberSearchString, int? page, 
        string searchButton, string searchByNumber, bool? activeProjectsOnly = true)
    {

将searchByNumber添加到控制器参数。

控制器参数在回发时查看“name”标记以及Request.Form。因此,要获取按钮的值,您必须引用它的名称。

如果您的表单有多个按钮,我建议使用JQuery或JavaScript根据点击的按钮设置隐藏字段的值并将其传递给控制器​​。