Solved

UpdateModel will not update

Posted on 2010-08-19
2
611 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 6

Accepted Solution

by:
thaytu888888 earned 500 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

What Is Transaction Monitoring and who needs it?

Synthetic Transaction Monitoring that you need for the day to day, which ensures your business website keeps running optimally, and that there is no downtime to impact your customer experience.

Question has a verified solution.

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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
In an ASP.NET application, I faced some technical problems. In this article, I list them out and show the solutions that I found.  I hope it will be useful. Problem: After closing a pop-up window, the parent page should be refreshed automaticall…
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…
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…

724 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