0

dynamic如何将此 ( ) 表绑定到IList<IList<string>>或其他类型

html:

@using (Html.BeginForm())
{
    <table>
        <thead>
            <tr><th>column1</th><th>column2</th></tr>
        </thead>
        <tbody>
            @for (int i = 0; i < 10; i++)
            {
                <tr><td><input type="text" value="@i" name="column1_@(i)"/></td><td><input type="text" value="@(Guid.NewGuid())" name="column2_@(i)"/></td></tr>
            }
        </tbody>
    </table>
    <input type="submit" value ="send"/>
}

我需要获取列和行

更新:

也许我可以拿 String[][]

4

1 回答 1

0

我的第一个想法是使用 a Dictionary<string, string>,但这不是可索引的,因此您必须编写自定义模型绑定器。不是那么难,但仍然如此。然后我考虑使用 a List<KeyValuePair<string, string>>,但KeyValuePairs 有私人设置器,所以,再次,你需要一个自定义活页夹。所以我认为最好的方法是:

创建自定义类型

public class MyItems
    {
        public string Key { get; set; }
        public string Value { get; set; }
    }

现在,将此类型的列表作为属性添加到您的视图模型

public List<MyItems> MyItems  { get; set; }

而且,在填充列表并强输入视图之后,当然,您可以使用内置的 html 帮助器呈现您的表格,以确保模型绑定不会出现任何问题

@for (int i = 0; i < Model.MyItems.Count( ); i++ )
            {
                <tr>
                    <td>@Html.TextBoxFor( m => m.MyItems[i].Key )</td>
                    <td>@Html.TextBoxFor( m => m.MyItems[i].Value)</td>
                </tr>
            }     

然后在控制器中捕获模型并访问您的数据

        [HttpPost]
        public ActionResult Index(Model viewModel)
        {
            foreach (var item in viewModel.MyItems)
            {
                string columnOneValue = viewModel.MyItems[0].Key;
                string columnTwoValue = viewModel.MyItems[0].Value; 
            }
于 2013-01-09T17:07:12.210 回答