?
Solved

UpdateModel will not update

Posted on 2010-08-19
2
Medium Priority
?
614 Views
Last Modified: 2013-11-08
The UpdateModel command does not update my object. The code is executed with no changes. Can you see why?
I think the problem is the name of the prefix. I have tried changing it; "Contract", "Contracts" and "contract".

The controller;
        [Authorize(Roles = "Inputter")]
        [HttpPost]
        public ActionResult Edit(int contractId, FormCollection formValues)
        {
            if (ModelState.IsValid)
            {
                using (var db = new ITOCEntities())
                {
                    var contract = db.Contracts.Single(x => x.ContractId == contractId);
                    string letter = contract.ContractNo_Letter;

                    UpdateModel(contract, "Contracts", formValues);
                    if (contract.ContractNo_Letter != letter)
                        contract.ContractNo_Number = Contract.AutogenerateContractNumber(contract.ContractNo_Letter);

                    var clientContact = db.Contacts.Single(x => x.ContactId == contract.ClientContactId);
                    UpdateModel(clientContact, "Contact", formValues);
                    var contractAdministrationContact = 
                        db.Contacts.Single(x => x.ContactId == contract.ContractAdministratorContactId);
                    UpdateModel(contractAdministrationContact, "Contact", formValues);
                    db.SaveChanges();
                }

                return RedirectToAction("List");
            }
            return View();
        }
------------------------------------------------------------
The ViewModel

    public class ContractViewModel
    {
        //private ITOCEntities db = new ITOCEntities();
        public Contract contract { get; set; }
        public IList<ContractType> contractTypes { get; set; }
        public IEnumerable<SelectListItem> contractTypesSelectList
        {
            get
            {
                return this.contractTypes.Select(item => new SelectListItem
                {
                    Text = item.ContractType1,
                    Value = item.ContractTypeId.ToString()
                });
            }
        }

 
        public Contact clientContact { get; set; }
        public Contact contractAdministratorContact { get; set; }

        public ContractViewModel()
        {
            using (var db = new ITOCEntities())
            {
                this.contractTypes = db.ContractTypes.ToList();

                this.clientContact = new Contact();
                this.contractAdministratorContact = new Contact();
                this.clientContact.ContactTypeId =
                    db.ContactTypes.Where(x => x.ContactType1 == "Client").SingleOrDefault().ContactTypeId;
                this.contractAdministratorContact.ContactTypeId =
                    db.ContactTypes.Where(x => x.ContactType1 == "CA").SingleOrDefault().ContactTypeId;
            }
        }
        public ContractViewModel(int contractId)
        {
            using (var db = new ITOCEntities())
            {
                this.contractTypes = db.ContractTypes.ToList();
                this.contract = db.Contracts.Where(x => x.ContractId == contractId).SingleOrDefault();
                this.clientContact = 
                    db.Contacts.Where(x => x.ContactId == this.contract.ClientContactId).SingleOrDefault();
                this.contractAdministratorContact =
                    db.Contacts.Where(x => x.ContactId == this.contract.ContractAdministratorContactId).SingleOrDefault(); 
          
            }
        }
--------------------------------------------------------
The ViewModel reference in the view;

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<ITOC.WebUI.Models.ContractViewModel>" %>

Open in new window

0
Comment
Question by:hijiki7777
2 Comments
 
LVL 6

Accepted Solution

by:
thaytu888888 earned 1500 total points
ID: 33477138
- UpdateModel usually doesn't working properly, may be you HTML form contains check box, combo box...etc, it only work well when the form controls are all text box, better don't use UpdateModel, try to set contract data manually
0
 

Author Closing Comment

by:hijiki7777
ID: 33486491
I can't say I am happy with this solution, but as far as I can tell you are right and as a result I took your advice and got it working.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
There is a huge demand for CodeIgniter among the PHP web developers due to its dynamic features and benefits these days. It is one of most popular and agile open source PHP framework for creating robust web applications in PHP web development field.…
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
When cloud platforms entered the scene, users and companies jumped on board to take advantage of the many benefits, like the ability to work and connect with company information from various locations. What many didn't foresee was the increased risk…
Suggested Courses
Course of the Month16 days, 7 hours left to enroll

850 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question