2017-02-05 4 views
0

C#mvcが新しくなりました。 は私が値Iは選択した値がコントローラに投稿されていません

[HttpPost] 
public ActionResult GetSliderValues() 
{ 
    ProviderName p = new ProviderName(); 
    p.Name = Request.Form["dvalue"]; 
    return View(p); 
} 

しかし、私のようにコントローラで選択した値を取得しようとしていますフォームを送信した後ViewBag

@using (Html.BeginForm("GetSliderValues", "Slider",FormMethod.Post)) 
{ 
    @Html.DropDownList("dvalue",(IEnumerable<SelectListItem>)ViewBag.names) 
    <input type="submit" name="submit" value="Submit" /> 
} 

から移入されているドロップダウンリストを含む簡単なフォームを持っていますいかなる価値も受けていません。 p.Nameは常にnullに設定されています。

+0

コードを作業する必要があり'Request.Form [" dvalue "]'は選択されたオプションの値を返します –

+0

しかし、そうではありません...ドロップダウンリストフィールドは投稿されていません –

+1

もちろん、これはあなたが示したコードに基づいています(あなたのコードは恐ろしいことですが)。あなたはそれをどう思いますか? –

答えて

1

POSTデータを取得しようとせずに取得しようとしていることに注目してください。そのため、FormMehod.Postの代わりにFormMethod.Getを使用する必要があります。

SelectListItemのIEnumerableではなく、新しいSelectListを作成してみます。あなたのビューで

@using (Html.BeginForm("GetSliderValues", "Slider",FormMethod.Get)) 
{ 
    @Html.DropDownList("dvalue",new SelectList(ViewBag.names)) 
    <input type="submit" name="submit" value="Submit" /> 
} 

そして、あなたのコントローラにだけ文字列パラメータを追加します。

public ActionResult GetSliderValues(string dvalue) 
{ 
    ProviderName p = new ProviderName(); 
    p.Name = dvalue; 
    return View(p); 
} 

最後に[HttpPost]デコレータを削除し、それはあなたが示されている

+0

これは気にする必要はありません:-) – bhansa

関連する問題