【问题标题】:MVC razor behaving unexpectedly, displaying incorrect textbox valuesMVC 剃须刀行为异常,显示不正确的文本框值
【发布时间】:2014-07-09 19:21:13
【问题描述】:

我这里有一点sn-p代码:

查看:

@foreach (var lines in Model.KVpairs)
{
    @Html.TextBoxFor( m => lines, new { placeholder = lines })
}

在我的应用程序中,我两次加载包含此代码的视图,第一次,它按预期工作,第二次,所有文本框的值都是相同的值,但占位符都是不同的。或者换句话说,占位符按预期工作,但值(框内的实际文本)不是。

我是否遗漏了一些非常明显的东西?

编辑:

想添加一些图片:

在我填写表格之前,我输入了这些值

在这里您可以看到 KVpairs 的值

这是我提交表单后得到的结果

这些是提交后的占位符

【问题讨论】:

  • 可以提供服务端代码吗?
  • 我不相信服务器端代码会给这个问题增加太多,我正在返回一个包含 foreach 循环的部分视图,并向它传递一个包含 KVpairs 的模型。我相信问题出在 htmlhelper 上,如果它意味着这个视图是使用 Ajax 加载的。

标签: asp.net-mvc-4 razor html-helper html.textboxfor


【解决方案1】:

代替 foreach 循环尝试使用这样的 for 循环:

@for (var i = 0; i < Model.KVpairs.Count(); i++)
{
    @Html.TextBoxFor( m => Model.KVpairs[i], new { placeholder = lines })
}

【讨论】:

  • 我想我应该提到 KVpairs 是一个列表。这会以任何方式改变您的答案吗?
  • 感谢您的帮助,我什至在这里找到了更广泛的答案:stackoverflow.com/questions/8894442/…
  • 它不会改变我的答案,之所以必须这样做是因为 ID 和 NAME 标记分配给助手呈现的元素。为了使它们正确绑定到您的模型,您必须使用带有索引的 for 循环。无论如何,您链接的答案指出...
  • 为了返回列表中元素的数量,您必须调用 Count(),而不是 Length。
猜你喜欢
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2016-07-23
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多