только что решил ту же проблему. так что для моего типа людей, которые будут иметь эту проблему в будущем, вот решение
вот основная причина.
когда вы делаете @Html.TextBoxFor(x=>x.m.Items[i].ItemNumber)
он выводит что-то вроде этого
<input type=text value='value' name='items[index].ItemNumber' ...
и затем добавляет другие валидации, такие как атрибуты data- * для валидации. например URL-адрес удаленной проверки, URL-адрес удаленного доступа и т. д.
теперь, когда форма была проверена, она запрашивала удаленный URL с данными, такими как key = xxx [1] .propertyname
и это нельзя назначить одной переменной в методе удаленного действия, которая получит это свойство.
если вы измените аргументы действия на что-то подобное, то это будет работать
public JsonResult UniqueItemNo(list<string> propertyname)
и даже в этом случае вы не гарантированы, так как для этого требуется, чтобы индекс параметров начинался с 0 и без пробелов. поэтому xxx [1] .ItemNumber никогда не будет отображен.
единственное оставшееся решение - получить имя свойства из строки запроса и сопоставить его с требуемой переменной. как это
if(Request.QueryString.AllKeys.FirstOrDefault(p => p.ToLower().Contains("propertyname"))!=null)
{
propertyname = Request.QueryString[Request.QueryString.AllKeys.First(p => p.ToLower().Contains("propertyname"))];
}
будет искать и отображать необходимые переменные.
надеюсь, это поможет