2015-05-04 37 views
0

我對此很新,所以如果我錯過了某些明顯的東西,我很抱歉。MVC5 - 將形式參數發送給控制器的問題

我想發送兩個字符串值到控制器使用Html.BeginForm。

這裏的控制器代碼(「BlogsController」內):

[Route("{type}/{variable}")] 
public ActionResult BlogResult(string type, string variable) 
{ 
} 

我試圖發送一個「隱藏」參數作爲「類型」(讓我認識到什麼查詢的排序是由執行用戶 - 在這種情況下字符串是'k')和'文本框'字符串作爲'變量'。下面是剃刀形式:

@using (Html.BeginForm("BlogResult", "Blogs", FormMethod.Post)) 
{ 
@Html.Hidden("type", "k") 
@Html.TextBox("variable") 
<input type="submit" name="Submit Keyword" /> 
} 

然而,當提交按鈕被按下,它只是似乎刷新當前頁面並且不調用適當的控制器。

我已經通過各種網站徹底搜索,但我找不到滿意的解決方案。因此,任何幫助將不勝感激。

+0

什麼模型類你綁定到你的看法? –

+0

您使用的是模型嗎?如果是這樣,請使用@ Html.TextBoxFor() –

+1

您用[HttpPost]裝飾過的方法? –

回答

0

問題應該在路由映射中。您應該使用它來指定動態路由。 ES:

[Route("blog/{articleId}")] 
public ActionResult GetArticle(int articleId) { ... } 

可能當您創建表單時,動態值仍然不存在(您稍後創建它們)。 嘗試並現在刪除路由屬性,看看它是否工作。

+0

感謝。我試過了,沒有路由映射,不幸的是,它仍然無法使用操作方法。 –

+0

你可以發佈該視圖產生的HTML嗎? – Hellraiser

+0

這是按下按鈕之前和之後的源代碼:

0

表單發佈現在可以在更改我的路由映射後按需要工作。

我所用:

routes.MapMvcAttributeRoutes(); 

定義屬性的路由,所以我決定發表評論了這一點,在RouteConfig恢復默認代碼。表單然後將正確的數據發佈到正確的操作方法。因此,這必須是我的定製屬性路線的問題。

感謝您的所有建議和幫助。

相關問題