ASP.NET MVC多个顺序帖子 - 数据不填充

时间:2011-08-09 05:55:14

标签: asp.net-mvc-3 razor

我的ASP.NET MVC页面上有一个相当复杂的表单。它就像这样......

在默认加载(没有HTTP帖子)时,它有两个选择框,绑定到模型,以及一个提交按钮。

在提交(HTTP帖子)时,选择框中的值用于从数据库中提取一些数据。然后将该数据添加到已发布的模型实例中,该实例用于发出另一个View(myModelInstance)调用。

此时,事情看起来不错。我的选择框保留了所选的值,并且显示了基于DB数据的新元素。

如果我现在再做一个帖子,无论是否更改数据,选择框中选择的原始值在我的控制器的Action方法中为空,但DB数据文本框的值不是。

我在这里做的唯一一件事就是在Razor中使用索引表示法来编辑我的模型中IEnumerable中的部分......如下例所示......

@for (int i = 0; i < ViewBag.SomeArbitraryNumber; i++)
{
     <input type="text" name="myModel.MyEnumerable[@i].MyValue" 
            value="@(Model.MyEnumerable[i].MyValue)" size="2" />
}

此索引表示法用法仅在发布原始选择框值后发生。

更新 这里的主要贡献者似乎是特殊的指数表示法。如果我消除它,它工作正常。此外,如果我包含其他隐藏字段以匹配两个选择框,并且还使用索引表示法,则第二个帖子可用。

1 个答案:

答案 0 :(得分:0)

您的浏览器是否可能正在缓存原始选择框,并且它们从未被您的第二个视图填充?在MVC中,每次显示时都必须填充选择框。在Webforms中,viewstate会自动为您执行此操作,但在MVC中,您可以确保它们已填充。