2011-06-26 10 views
1

foreachループ内でTextBoxForヘルパーからデータを取得する方法はありますか?私が意味する:ビューのforeachループ内の#razor mvc textboxfor

foreach(Language l in ViewBag.Languages){ 
    <td>@l.lang</td> 
    <td>@Html.TextBoxFor(model => model.Name) 
} 

とどのように私は一度投稿コントローラーでそれを取得することができますか?あなたが使用して、アクションでModelBinderを使用することができるはず

public string Name { get; set; } 

答えて

1

:model.Nameは次のようにMyModel.csに定義されているところで

MyModel.Name //this returns the value of the first textbox within the foreach loop 

public ActionResult MyAction(string[] name) 
{ 
    foreach (var item in name) 
    { 
     // Process items 
    } 
} 

nameは、テキストボックスに自動的に与えられる名前ですHtml.TextBoxFor()です。


編集:あなたはより説明的なものにnameからパラメータ名を変更したい場合は、stongタイピングの損失はあるものの、Html.TextBoxを使用することによって、これを達成することができます:

@Html.TextBox("SomeMoreDescriptiveName", Model.Name); 

そして、あなたのコントローラのアクションで:

public ActionResult MyAction(string[] SomeMoreDescriptiveName) 
{ 
    ... 
} 
+1

モデルをパラメータとして渡す場合はどうしたらよいですか?コントローラーが次のような場合は、public ActionResult(MyModelモデル)とモデルから値を取得していますか? – Shaokan

+0

あなたが 'string [] Name {get;セット; } 'モデルでは、デフォルトのModelBinderはバインドできます。 – aligray

1
@foreach (var _item in Model.ListSurvey) 
{ 
    @Html.TextBoxFor(m=>m.Question, new { Value = @_item.Question }) 

} 
関連する問題