2013-11-28 103 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

相關問題