摘要
我正在向我的asp.net-mvc后端发布一个对象数组,并根据一些用户输入生成“Key”,我只是意识到如果用户输入回车符合它就不起作用.
细节:
所以我有一个表单,我的一个元素是一个对象数组(称为Deliverables)
public class FormPost
{
public int Id {get;set;}
public string ProjectName {get;set;}
public List<Deliverable> Deliverables {get;set;}
}
public class Deliverable
{
public int Id {get;set;}
public string Name {get;set;}
public DateTime MilestoneDate {get;set;}
}
我在how to do correct model binding for non sequencial object arrays here左右阅读了Phil Haack的博客文章.
我正在简化我的问题,但我基本上使用文本框和模型绑定建议通过使用这样的东西
<input type="text" name="Deliverables.Index" value="First">
<input type="text" name="Deliverables[First].Id" value="100">
<input type="text" name="Deliverables[First].Name" value="Name">
<input type="text" name="Deliverables[First].MilestoneDate " value="1-Jan-2104">
<input type="text" name="Deliverables.Index" value="Second">
<input type="text" name="Deliverables[Second].Id" value="88">
<input type="text" name="Deliverables[Second].Name" value="Second Name">
<input type="text" name="Deliverables[Second].MilestoneDate " value="31-Jan-2104">
所以在这种情况下,鉴于上面的文本框,我将在Deliverables数组中有2个条目
我的问题集中在指数的有效值.在上面的情况下,我使用“第一”和“第二”工作正常,但如果我在该字符串中有一个回车项目该项目无法发布.
我的问题是“我真的可以在这里使用任何东西吗?”我想我可以在javascript端删除回车但是开始考虑是否还有其他字符也无法发布.
最佳答案 最好的做法应该是使用数字作为数组的索引,这样可以省去很多麻烦.第二个好的做法是不允许用户输入设置你的密钥,但如果必须这样做,你可以使用替换,如你所提到的
Regular Expressions,以避免应用程序崩溃.