Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stack trace error

Tags:

asp.net-mvc

I am having the error message:I can`t figure out what is wrong. Can someone help me please. Thanks.

Stack Trace:

[NotSupportedException: Collection is read-only.]
System.SZArrayHelper.Clear() +56
System.Web.Mvc.CollectionHelpers.ReplaceCollectionImpl(ICollection`1 collection, IEnumerable newContents) +125

ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

My code is: Model:

 namespace TestArrays.Models
{
    public class Person
    {
        public CategoriesRow[] Categories { get; set; }
        public Person()
        {

            Categories = new CategoriesRow[1];
            Categories[0] = new CategoriesRow();
            Categories[0].Name = "Bug";
            Categories[0].ID = "0";
        }
    }

    public class CategoriesRow
    {
        public String Name { get; set; }
        public String ID { get; set; }
    }

}

Controller

public ActionResult Create()
    {
        return View(new Person());
    } 

    //
    // POST: /Person/Create

    [HttpPost]
    public ActionResult Create(Person person)
    {
        try
        {
            // TODO: Add insert logic here

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Views

    <form id="Form" action="<%=Url.Action("Create",new{Action="Create"}) %>" method="post" enctype="multipart/form-data">
   <div id="categoriessection" >
            <h3>Categories</h3>
            <ul class= "list"  id="categoryList">
            <%if (Model.Categories!=null) {%> 
            <%int count = 0; %>
                <%foreach (var category in Model.Categories)
                 {%>
                 <%if (!String.IsNullOrEmpty(category.Name))                   
                   {%>
                    <li><input type="hidden" name="Categories.Index" value="<%=count%>" />
                        <input type="text" value="<%=category.Name%>"  name="Categories[<%=count%>].Name" style="width:280px"/>
                        <input type="hidden" value="<%=category.ID%>"  name="Categories[<%=count++%>].ID" style="width:280px"/>
                        <input type="button" value = "Delete"/>
                    </li>
                    <%}
                     %>
                 <%} %>
             <%} %>            
                <li> <input type="hidden" name="Categories.Index" value="value0" />
                 <input type="text" value=""  name="Categories[value0].Name" style="width:280px"/>
                  <input type="hidden" value=""  name="Categories[value0].ID" style="width:280px"/>
                     <input type="button"  value= "Add" />
                </li>
             </ul>
        </div>

         <div>
         <input  type ="submit" value="Save" id="save" /> 
         </div>
         </form>
like image 555
learning Avatar asked Jul 13 '10 06:07

learning


1 Answers

I usually use lists instead of vectors in models:

public List<CategoriesRow> Categories { get; set; }
like image 112
onof Avatar answered Sep 28 '22 05:09

onof