【问题标题】:how to access input type=submit value in c# mvc controller如何在c#mvc控制器中访问输入类型=提交值
【发布时间】:2015-04-15 03:51:34
【问题描述】:

我正在开发一个 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>

是否可以通过Request.Form检查Controller中“searchButton”的值?

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

// 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)
    {

当我单击“按名称搜索”按钮时,控制器中的“搜索按钮”字符串 =“按名称搜索”。这是意料之中的,但为什么我无法使用以下方法对其进行检查:

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>

任何帮助将不胜感激。

【问题讨论】:

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


【解决方案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 添加到控制器参数中。

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

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

【讨论】:

  • 控制器没有查看“名称”标签。该帖子正在发送键/值对。键对应名称。
  • 感谢 Cyber​​drew。您添加“searchByNumber”的建议实际上在这种情况下有效,但我试图避免这样做。我希望能够引用任何表单控件/值。是不是因为 Action 用于 GET 和 POST,所以我无法这样做?在我发布问题之前,我已经无法使用 javascript 函数 onclick 作为按钮,因此我可以在隐藏字段中设置“searchButton”值,如下所示: function searchByNumber() { @Html.Hidden("searchByButton", " searchByNumber") 返回真; }
  • 你对鞋有什么建议吗?还是您建议我查看表单中的其他位置(即“键”)?
  • 对不起,我不是更清楚,是的,它使用名称/值对,使用名称作为键。
  • @Shoe - 我最终采纳了你的建议。我花了一段时间将您的答案标记为已接受。非常感谢。
猜你喜欢
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多