我正在尝试在我的MVC应用程序中创建一个输入加载,由MVC模型绑定器拾取以填充我的视图模型。它不起作用,我不知道为什么。
这是一个淘汰片段,我希望能够为模型绑定器创建输入:
<div data-bind="foreach: witnesses">
<input data-bind="attr: { name: 'Witnesses[' + $index() + '].firstName', value: firstName}" />
<input data-bind="attr: { name: 'Witnesses[' + $index() + '].lastName', value: lastName}" />
<!-- more fields here -->
</div>
以下是C#中视图模型的片段:
public class GraffitiViewModel
{
// view model
public List<Witness> Witnesses;
}
public class Witness
{
public string firstName { get; set;}
public string lastName { get; set; }
public string telephone { get; set; }
public string email { get; set; }
public string propertyNameNumber { get; set; }
public string street { get; set; }
public string postcode { get; set; }
}
输入已成功传递到Request.Form中的服务器,但它们未绑定到视图模型。任何人都知道为什么?我唯一的另一个选择是单步执行MVC源代码,找出模型绑定发生的位置以及它无法正常工作的原因。
标记
答案 0 :(得分:0)
你的nemesv和alklesh
我的视图模型现已成功绑定,感谢您的帮助。建议的语法不起作用,所以我回到:
<input data-bind="attr: { name: 'Witnesses[' + $index() + '].firstName', value: firstName}" />
这不太好但是有效,所以我很高兴。我可能会重新审视它,并试着让它更整洁,但我现在已经花了足够的时间,所以我继续前进。
再次感谢您的帮助。
标记
答案 1 :(得分:-1)
我认为您正在尝试通过此'Witnesses ['+ $ index()+']。firstName设置name属性。 所以首先你可以使用$ parent而不是这个你可以直接使用propery名称。根据@ nemesv的建议,首先要见证一个财产。
<div data-bind="foreach: witnesses">
<input data-bind="attr: { name: $parent.witnesses()[$index()].firstName, value: firstName}" />
<input data-bind="attr: { name: $parent.witnesses()[$index()].lastName, value: lastName}" />
<!-- more fields here -->
</div>