shrey Pav
shrey Pav

Reputation: 181

Assign one model value to another

I have a model DropDownConfiguration which is fetching values from database and populating the dropdown list.

Model:

public class DropDownConfiguration
    {
        public int ID { get; set; }
        public int Quarter { get; set; }
        public int Year { get; set; }
        public string Project { get; set; }
        public string LineID { get; set; }

    }

html:

 @Html.DropDownList("Project", new SelectList(Model.dropConfig, "ID", "Project"), "-- Select Project --", new { required = true, @class = "form-control" })

I have another model DetailsConfiguration which has all the fields which need be saved into the database.

 public class DetailsConfiguration
    {

        public int Quarter { get; set; }
        public int Year { get; set; }
        public string Project { get; set; }
        public string ItemModel { get; set; }

    }

Controller HttpPost:

  [ActionName("DetailsForm")]
        [HttpPost]

        public ActionResult DetailsForm(DetailsViewModel model, FormCollection form)
        {

            DetailsConfiguration detailsConfig = new DetailsConfiguration();
            detailsConfig.Quarter = Convert.ToInt32(form["Quarter"]);
            detailsConfig.Year = Convert.ToInt32(form["Year"]);
            detailsConfig.Project = model.detailsConfig.Project;
            detailsConfig.ItemModel = model.detailsConfig.ItemModel;  
            detailsConfig.LineID = model.detailsConfig.LineID;

            floorService.SaveDetails(detailsConfig);

            ModelState.Clear();
            ViewBag.message = "Success";
            return View("DetailsForm");

        }

Is there anyway to do something like:

model.detailsConfig.Project = model.dropConfig.Project

I need the selection of Project to be posted back to database through DetailsConfiguration.

Upvotes: 2

Views: 6198

Answers (1)

JKL
JKL

Reputation: 1060

You could create a mapper which sets the values of the properties in DropDownConfiguration to DetailsConfiguration.

When you change the dropdown you send the selected DropDownConfiguration to the server. You know exactly what properties you can expect here so you can do something like this:

[HttpPost]
public IHttpActionResult AddDetailsConfiguration(DropDownConfiguration parameter)
{
   //check here if values in parameter are set

   var detailsConfiguration = new DetailsConfiguration {
        Quarter = parameter.Quarter,
        Year = parameter.Year,
        Project = parameter.Project
   }

   //Insert detailsConfiguration to database

   Return Ok();
}

Note that you have to make sure you send a DropDownConfiguration object on selecting a dropdown item. You could also only send the values you need like this:

[HttpPost]
public IHttpActionResult AddDetailsConfiguration(int quarter, int year, string project)
{
    //Check here if values in parameter are set and if values are correct

    var detailsConfiguration = new DetailsConfiguration
    {
         Quarter = quarter,
         Year = year,
         Project = project
    }

    //Insert detailsConfiguration to database

    Return Ok();
}

Upvotes: 1

Related Questions