【问题标题】:Get input value on server side在服务器端获取输入值
【发布时间】:2013-11-28 21:18:08
【问题描述】:

我遇到了一些麻烦,不知道发生了什么。

我有一个带有输入值的表单,并且希望能够获取该输入值并将其发送回我的控制器(服务器端)。

我的html代码

<form action="/Home/Search" method="get">
                    <button class="search-btn-widget"></button>
                    <input class="search-field" id="sub" type="text" onblur="if(this.value=='')this.value='Search';" onfocus="if(this.value=='Search')this.value='';" value="Search" />
                </form>

然后在我的控制器中我有

string sub = Request["sub"];

但是它最终为 null 并且不确定发生了什么。有什么想法吗?

【问题讨论】:

  • 您绝对应该研究强类型视图。您当前以不正确的方式使用 MVC。
  • 我不完全明白这与问题有什么关系,但没关系。
  • 只是想提供一些指导。你在使用 MVC 时走错了方向。

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


【解决方案1】:

只是为了让它工作:添加 name 属性

 <input class="search-field" id="sub" name="sub" ...

但检查this

【讨论】:

  • 感谢这工作。我只是认为 id 无需包含名称即可工作。愚蠢的错误。
  • 很好,但也要检查 MVC 中的模型绑定机制。
  • 我已经在使用它,但也许我需要进一步研究它。谢谢。
【解决方案2】:

您需要在输入标签中添加名称属性。

如果您打开开发者控制台并查看正在发送的 HTTP GET 请求,您将看到没有与该请求关联的查询字符串。这会让您知道 HTML 方面的问题,而不是 ASP.Net MVC 方面的问题。

更新输入标签:

<input class="search-field" id="sub" name="sub" type="text" onblur="if(this.value=='')this.value='Search';" onfocus="if(this.value=='Search')this.value='';" value="Search" />

将控制器动作更新为:

public ActionResult Search(string sub)

【讨论】:

    【解决方案3】:

    1) 如果您想查看您对Request 的输入,您必须将您的Form 作为 POST 发送:

    <form action="/Home/Search" method="POST">
    

    2) 确保输入有name:

    <input class="search-field" id="sub" name="name" 
     type="text" 
     onblur="if(this.value=='')this.value='Search';"
     onfocus="if(this.value=='Search')this.value='';" 
     value="Search" />
    

    那么你就可以在请求中看到它了

    【讨论】:

    • 我想在 GET 中看到它,但 name 属性是问题所在。但是谢谢和 +1。
    【解决方案4】:

    您应该将名称属性添加到输入元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多