1

これは私のビューのコードです:コードとしてパスSelectedValueの()3

@using(Html.BeginForm(new { SelectedId = /*SelectedValue of DropDown*/ })) { 

<fieldset> 

    <dl> 
     <dt> 
      @Html.Label(Model.Category) 
     </dt> 
     <dd> 
     @Html.DropDownListFor(model => Model.Category, CategoryList) 
     </dd> 
    </dl> 

</fieldset> 
<input type="submit" value="Search" /> 


} 

私はBeginForm() HTMLヘルパーでのアクションにdropdown選択された値を渡す必要が示され。あなたの提案は何ですか?

+1

レンダリング時に選択した値をどのように知っていますか? – Tuan

+0

@Tutanこれは私の質問です。 – Saeid

答えて

13

ドロップダウンリストが<select>要素で表されるため、フォームの送信時に選択した値が渡されます。

@using(Html.BeginForm()) 
{ 
    <fieldset> 
     <dl> 
      <dt> 
       @Html.LabelFor(x => x.SelectedId) 
      </dt> 
      <dd> 
       @Html.DropDownListFor(x => x.SelectedId, Model.CategoryList) 
      </dd> 
     </dl> 
    </fieldset> 

    <input type="submit" value="Search" /> 
} 

これは、次のビューモデルを前提としています:

public class MyViewModel 
{ 
    [DisplayName("Select a category")] 
    public int SelectedId { get; set; } 

    public IEnumerable<SelectListItem> CategoryList { get; set; } 
} 

することになりますあなたはそれはあなたがドロップダウンをバインドする例えばSelectedIdと呼ばれる性質を持つように、あなたのビューモデルを適応させる必要がありますあなたのコントローラーによって処理されます:

public ActionResult Index() 
{ 
    var model = new MyViewModel(); 
    // TODO: this list probably comes from a repository or something 
    model.CategoryList = new[] 
    { 
     new SelectListItem { Value = "1", Text = "category 1" }, 
     new SelectListItem { Value = "2", Text = "category 2" }, 
     new SelectListItem { Value = "3", Text = "category 3" }, 
    }; 
    return View(model); 
} 

[HttpPost] 
public ActionResult Index(MyViewModel model) 
{ 
    // here you will get the selected category id in model.SelectedId 
    return Content("Thanks for selecting category id: " + model.SelectedId); 
} 
関連する問題