Trying to edit an entity with data from dropdowns in MVC...

Posted by user598352 on Stack Overflow See other posts from Stack Overflow or by user598352
Published on 2011-02-23T15:22:06Z Indexed on 2011/02/23 15:25 UTC
Read the original article Hit count: 194

Hello!

I'm having trouble getting my head around sending multiple models to a view in mvc. My problem is the following.

Using EF4 I have a table with attributes organised by category.

Couldn't post an image :-( [Have a table called attributes (AttributeTitle, AttributeName, CategoryID) connected to a table called Category (CategoryTitle).]

What I want to do is be able to edit an attribute entity and have a dropdown of categories to choose from.

I tried to make a custom viewmodel

    public class AttributeViewModel
{
    public AttributeViewModel()
    {
    }

    public Attribute Attribute { get; set; }
    public IQueryable<Category> AllCategories { get; set; }
}

But it just ended up being a mess.

<div class="editor-field">
        <%: Html.DropDownList("Category", new SelectList((IEnumerable)Model.AllCategories, "CategoryID", "CategoryName")) %>
    </div>

I was getting it back to the controller...

        [HttpPost]
    public ActionResult Edit(int AttributeID, FormCollection formcollection)
    {
        var _attribute = ProfileDB.GetAttribute(AttributeID);
        int _selcategory = Convert.ToInt32(formcollection["Category"]);
        _attribute.CategoryID = (int)_selcategory;

        try
        {
            UpdateModel(_attribute); (<---Error here)
            ProfileDB.SaveChanges();

            return RedirectToAction("Index");
        }
        catch (Exception e)
        {

            return View(_attribute);
        }
    }

I've debugged the code and my _attribute looks correct and _attribute.CategoryID = (int)_selcategory updates the model, but then I get the error.

Somewhere here I thought that there should be a cleaner way to do this, and that if I could only send two models to the view instead of having to make a custom viewmodel.

To sum it up: I want to edit my attribute and have a dropdown of all of the available categories.

Any help much appreciated!

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about entity-framework-4