将筛选的列表模型传递给视图时出现奇怪的HtmlHelper行为

时间:2014-06-03 14:04:33

标签: c# asp.net-mvc

我尝试做的是为用户创建一个表单,为每个公司输入一个用户名,该用户名将从数据库中提取。一旦用户按下"创建",它将尝试将用户名添加到数据库。如果有任何公司的用户名有错误(即用户名太短,包含数字等),我再次生成表格,只有这些公司有空白的用户名字段。但是,由于某些原因,这不起作用......

.NET小提琴代码: https://dotnetfiddle.net/lAttUb

如果您输入以下内容:

    Delta Inc.的
  • delta (应该被接受)
  • Ellesmore Center的
  • ec (错误 - 太短)
  • 430株公司的
  • 430 (错误 - 包含数字)

它将返回为Ellesmore Center填写 delta 的表单,并为430 Corporation填写 ec 。从调试器开始,看起来直到HtmlHelper.TextBoxFor方法才能运行。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

问题是您的DisplayFor和TextBoxFor不同步

在For循环上放置一个断点并运行上面描述的测试用例。 你会找到那个

@Html.DisplayFor(x => x.WifiAccounts[0].CompanyName) == EllesMore Center

@Html.TextBoxFor(x => x.WifiAccounts[0].Username) == "Delta"

修改

NVM以上情况并非如此 您的View保留了之前获取方法中有关模型的信息。

在ForEach语句和

之前添加ModelState.Clear()

还会注释掉此代码,否则您的文本框字段将为空

//account.Username = string.Empty;