我正在处理一个网络表单,在这个网络表单中我有多个同名的输入。
<% using(Html.BeginForm("Create", "Object", Method.Post))
{
foreach(var prop in Model.Properties)
{%>
<div id="prop-<%= prop.name %>">
<input name="<%= prop.name%>" value="" type="text" />
<% if(prop.type == "Lines")
{%>
<input type="button" value="Add More" onclick="$('#prop-<%= prop.name %>').append('<input name=\'<%= prop.name%>\'></input>');" />
<%}%>
<%}%>
现在在 C# 中我得到这样的结果
var result = "item_name1,item_name2,item_name3"
但如果用户在一个字段中输入逗号,例如字段 2,结果将是:
var result = "item_name1,item,name2,item_name3"
现在我不知道正确的输入是什么
注意:我不能使用对象和模型,只能使用 FormCollection,在此先感谢
我的 C# 代码:
[HttpPost]public ActionResult Edit(string ObjectId, string Code, FormCollection form){
foreach (var key in form.AllKeys)
{
var prop_name = key;
var property = db.Properties.First(prop => prop.Name == prop_name);
if (property.ReadOnly == true)
{
continue;
}
string EmptyValue = property.EmptyValue;
//for lines we need to split the incoming value
var values = form[key].Split(',');
int rowNo = 0;
foreach (var value in values)
{
var temp = new DI_Value();
//Here we get value according to it's data type
temp.Value = GetValue(value, property.DataType);
PropertyName = prop_name;
temp.RowNumber = rowNo++;
temp.DataType = property.DataType;
temp.EmptyValue = EmptyValue;
data.Add(temp);
}
}
}
}
我正在使用 Json 将数据发送到服务器:
$.ajax({ type: 'POST', url: submit_url, data: $(form).serialize(),
success: function (result) {
if (result.error) {
setStatusMsg(result.error_text, 'error');
}
else {
setStatusMsg(success_message, 'success');
});
逻辑是获取表单并将其保存到 XML 文件,但所有字段都是动态的,因为我不能使用模型