MVC 3 の送信ボタンに動的に追加された Textbox の値を取得したい。
非表示フィールドに値を保存し、FromCollection を使用しています。より良いアプローチはありますか?
MVC 3 の送信ボタンに動的に追加された Textbox の値を取得したい。
非表示フィールドに値を保存し、FromCollection を使用しています。より良いアプローチはありますか?
値に MyValues[x] のような名前を付けると、x はゼロベースで連続的に増加する整数であり、MyValues という名前の文字列のリストとして文字列値を受け取ることができます。
このトリックは、必要に応じて、メイン モデル オブジェクトのプロパティに対しても機能します。
ASP mvc でコレクションにバインドする方法に関するいくつかの記事を確認する必要があります。
例http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
次のようなことを行うことができます (エディターの外で非常にすばやく記述されているため、タイプミス/問題がある可能性があります): ビュー モデルを作成します。
public class DynamicTextBoxViewModel
{
public IList<string> DynamicTextBox { get; set; }
public int OtherStuffInViewModel { get; set; }
}
次に、Get
アクションで:
var model = new YourViewModel
{
DynamicTextBoxList =
new List<DynamicTextBox>
{
new DynamicTextBox
{
TextBoxText = string.Empty,
}
},
OtherStuffInViewModel = xxx,
};
return View(model)
次に、Post
アクションで:
好きな場所にすべてをバインドします。
アイデアは、すべてのデータを ViewModel に移動してそれを渡すことで、FormCollection を渡す代わりに ViewModel の利点を得ることができます。