是否可以将绑定模型绑定到已发布的已损坏的索引数组?
<input type='text' name='question[3]' value='answer to question 3' />
<input type='text' name='question[5]' value='whatever here' />
<input type='text' name='question[18]' value='a different ansewr' />
<input type='text' name='multiquestions[4][1]' value='question 4 part 1' />
<input type='text' name='multiquestions[4][2]' value='question 4 part 2' />
理想情况下,我希望我的模型符合以下几行(虽然键入此内容我可以看到稀疏数组键是个问题):
public class MyModel {
public Dictionary<int,string> questions {get;set;}
public Dictionary<int, Dictionary<int, string>> multiquestions {get;set;}
}
让MVC模型绑定器完成繁重的工作:
public ActionResult MyAction(MyModel model) {...}
但似乎只能很好地处理非破坏的索引。我需要索引,因为它是我将数据放入数据库的方式。
我宁愿没有一系列描述模型的隐藏字段,例如: <input type=hidden name='questions[0].Key' value='3' /><input type=hidden name='questions[0].Value' value='answer to question 3' />
我已经阅读了关于该主题的Hanselman blog post,建议编写一个自定义模型绑定器,如果没有任何开箱即用,但不知道从哪里开始编写自定义绑定器,我希望有MVC可以“开箱即用”的东西,或者那个somoene已经解决了这个问题
答案 0 :(得分:0)
经过一番搜索后,事实证明不使用int作为字典键是诀窍。
模型绑定将按照我期望的Dictionary<string, string>
和Dictionary<string, Dictionary<string, string>>
工作,当我在服务器上时,我需要将键解析为int。
答案 1 :(得分:-2)
您可以在访问值
之前检查count或null