2013-11-28 142 views
0

我遇到了一些麻烦,不知道发生了什么事情。在服务器端获取输入值

我有一个输入值的形式,并希望能够得到该输入值并将其发送回我的控制器(服务器端)。

我的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"]; 

但是它最终被空,不知道发生了什么事情。有任何想法吗?

+1

你一定要看看强类型的意见。您目前正在以不正确的方式使用MVC。 –

+0

我并不完全明白这与问题有关,但可以。 – Claud

+1

只是想提供一些指导。你正在向MVC完全错误的方向发展。 –

回答

2

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

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

但检查this

+0

谢谢你的工作。我只是认为ID不需要包含名字就可以工作。愚蠢的错误。 – Claud

+0

好,但也请检查MVC中的模型绑定机制。 – 2013-11-28 21:35:28

+0

我已经在使用它,但也许我需要更多地关注它。谢谢。 – Claud

0

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

+0

..注意MVC标签。 –

1

您需要将name属性添加到输入标签。

如果您拉起开发人员控制台并查看正在发送的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) 
1

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" /> 

然后你就可以这么看它在请求

+0

我想在GET中看到它,但名称属性是问题。但是,感谢和+1。 – Claud

相关问题