0

次のようなビューがあります。

@model List<int>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (Html.BeginForm())
{
<ul>
@{int counter = 0;}
@foreach (var i in Model)
{
    <li>@Html.TextBoxFor(m => m[counter])</li>
    counter++;
}
</ul>
}

私の問題は、生成されたhtmlが次のようになることです...

    <li><input name="[0]" type="text" value="1" /></li>
etc.. etc...

コントローラーにポストバックすると、フォーム名がコントローラーにバインドされません。それを修正する方法についての考え(プレフィックスか何か?)

4

1 に答える 1

1

私はしばらく前に同じ問題を抱えていましたが、これが私の解決策です(回避策?)

ビューでこのコードを使用して、フォームを生成できます。

@Html.TextBox("number[" + counter + "]", i)

そして、コントローラーでList<int> numberパラメーターを使用してアクションを定義します

public ActionResult Index(List<int> number) { ... }

単純な解決策がうまくいかない理由を見つけようとしたことは一度もありませんが、そのモデル バインダーには、操作するプロパティ名が必要だと思います。

于 2012-04-25T14:37:06.627 に答える