2009-12-08 58 views
1

我处于一种情况,我正在给一个数据集输出到MVC视图。我真的很想弄清楚如何在提交后让模型绑定器在重新找回的时候提取它。我有这样的东西...ASP.NET MVC 1:数据集ModelBinding

public ActionResult TestData() 
{ 
    DataSet data = new DataSet("DS"); 

    DataTable table = new DataTable("DT"); 
    data.Tables.Add(table); 

    table.Columns.Add("ID", typeof (int)); 
    table.Columns.Add("Name", typeof (string)); 

    table.Rows.Add(1, "John"); 
    table.Rows.Add(2, "Mark"); 
    table.Rows.Add(3, "Paul"); 
    table.Rows.Add(4, "Chris"); 

    return View(data); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult TestData(DataSet data) 
{ 
    return View(data); 
} 

在页面上我尝试了很多不同的输入元素的命名方案,但无济于事。这甚至是可能的。如果可能的话,我会使用视图模型类型,但不幸的是,这是一个完全动态的结构,而数据集是最自然的东西。

回答

2

如果是我,我会将这些行序列化为隐藏的字段,它们都具有相同的名称属性。也许类似于

<input type="hidden" name="dsRows" value="[id]_[name]" /> 

然后在第二个动作(接受POST的那个动作)上,接受一个字符串[]作为参数。然后,您可以使用一些LINQ查询或其他东西将数组“爆炸”到数据集中。

(注意:我没有具体测试过,但我已经多次使用该策略)

+0

感谢您的建议。这(或类似的选项)似乎是要走的路。我想我会尝试让我的数据集变得更友好,而不是使用它的香草。 – 2009-12-08 13:26:30