3

I wish to save an id field called AssetAssignmentID the value of "2" everytime a new modelname is saved.

I was looking to see if i could do the following;

That was if the Modelname was not null, then save both the ModelName and AssetAssignmentID to = "2"

  public ActionResult Create(ClinicalAsset clinicalAssets)
    {


        try
        {

            if (ModelState.IsValid)
        {

                if (clinicalAssets.ModelName != null)
                {
                    clinicalAssets.ModelName = clinicalAssets.ModelName;
                    clinicalAssets.AssetAssignmentID = "2";


                }


                db.ClinicalAssets.Add(clinicalAssets);
                db.SaveChanges();
                return RedirectToAction("Details", "ClinicalAssets", new { ClinicalAssetID = clinicalAssets.ClinicalAssetID });
            }
    }

However it complains that an object reference is required for non-static field. If I make reference to the AssetAssignmentID in the ClinicalAsset Model I cannot convert type int to Model.

The populated dropdownlist

private void PopulateModelDropDownList(object selectedModel = null)
        {
            var ModelsQuery = from d in db.Models.Where(x => x.AssetAssignmentID == 2) orderby d.ModelName select d;
            ViewBag.ModelDropDown = new SelectList(ModelsQuery, "ModelID", "ModelName", selectedModel);
        }

I would expect that every time a new ModelName is submitted to the database the AssetAssignmentID would always equal the value of two.

edit

I have also tried


                      var clinicalAsset = new ClinicalAsset { AssetAssignmentID = 2 };

                    if (clinicalAssets.ModelName != null)
                    {
                        clinicalAssets.ModelName = clinicalAssets.ModelName;

                    }


                    db.ClinicalAssets.Add(clinicalAsset);
                    db.SaveChanges();
                    return RedirectToAction("Details", "ClinicalAssets", new { ClinicalAssetID = clinicalAssets.ClinicalAssetID });

but the error is: Cannot implicitly convert type 'int' to 'Assets.Models.Model'

ClinicalAsset Model:

using Assets.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace Assets.Areas.Clinical.Models
{
    public class ClinicalAsset
    {

        [Key]
        public int ClinicalAssetID { get; set; }
        public int AssetTypeID { get; set; }
        public int? ProductID { get; set; }
        public int? ManufacturerID { get; set; }
        public int? ModelID{ get; set; }
        public int? SupplierID { get; set; }
        [StringLength(100, MinimumLength = 2)]
        public string SerialNo { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
        public DateTime? PurchaseDate { get; set; }
        [StringLength(100, MinimumLength = 2)]
        public string PoNo { get; set; }
        [DisplayFormat(DataFormatString = "{0:c2}", ApplyFormatInEditMode = true)]
        public decimal? Costing { get; set; }
        public int? TeamID { get; set; }
        public int? BudgetCodeID { get; set; }
        public int? StaffID { get; set; }
        public bool? Filter { get; set; }



        public virtual Model ModelName { get; set; }
        public virtual Model AssetAssignmentID { get; set; }
        public virtual BudgetCode BudgetCodeJoinColumn { get; set; }
        public virtual Product ProductName { get; set; }
        public virtual AssetType AssetTypeName { get; set; }
        public virtual Manufacturer ManufacturerName { get; set; }
        public virtual Staff StaffName { get; set; }
        public virtual Team TeamName { get; set; }
        public virtual Supplier SupplierName { get; set; }

        public virtual ICollection<ClinicalPAT> ClinicalPATs { get; set; }



    }
}

Models model

namespace Assets.Models
{
    public class Model
    {

        [Key]
        public int ModelID { get; set; }
        public int AssetAssignmentID { get; set; }
        public string ModelName { get; set; }

    }
}

Create Form:

@model Assets.Areas.Clinical.Models.ClinicalAsset
<link href="~/Content/bootstrap-timepicker.min.css" rel="stylesheet" type="text/css" />
@{
    ViewBag.Title = "Create Asset";
    ViewBag.Current = "Create Asset";
}


<div class="pageheader">
    <h2><i class="fa fa-pencil"></i>Add Clinical Assets</h2>
    <div class="breadcrumb-wrapper">
        <span class="label">You are here:</span>
        <ol class="breadcrumb">
            <li>Asset Management System</li>
            <li class="active">Clinical Assets / Add Asset</li>
        </ol>
    </div>
</div>
<div class="contentpanel">
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()



        <div class="col-md-6">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <div class="panel-btns">
                        <a href="" class="minimize">&minus;</a>
                    </div>
                    <h4 class="panel-title">Create an asset.</h4>
                    <p>Please fill in the required boxes as a minimum.<text style="color:red;"> * </text> </p>
                </div>
                @Html.ValidationSummary()
                <div class="panel-body">
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group">
                                @Html.LabelFor(model => model.AssetTypeID, "Asset Type:", new { @class = "control-label" })
                                @Html.DropDownListFor(model => model.AssetTypeID, (SelectList)ViewBag.AssetTypeDropDown, "Please Select From The List", new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model.AssetTypeID, "", new { @class = "text-danger" })
                            </div>
                        </div><!-- col-sm-6 -->

                        <div class="col-sm-6">
                            <div class="form-group">
                                <label id="lbltipAddProduct">Select Product:</label> <label id="lbltipAddProduct2" style="display:none;">Enter Product:</label>   
                                <label id="hideproductbutton" style="float: right;"><i class="myClass fa fa-edit" id="product"></i></label>
                                <label id="shownewproductbutton" Style="float: right; display:none;"><i class="glyphicon glyphicon-remove-circle" id="product2"></i></label>
                                <div id="Product">
                                    @Html.DropDownListFor(model => model.ProductID, (SelectList)ViewBag.ProductDropDown, "Please Select From The List", new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.ProductID, "", new { @class = "text-danger" })
                                </div>
                                <div class="js-product" style="display:none;">
                                    @Html.EditorFor(model => model.ProductName.ProductName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Product Name Here", disabled = "disabled" } })
                                    @Html.ValidationMessageFor(model => model.ProductName.ProductName, "", new { @class = "text-danger" })
                                </div>
                            </div>
                        </div><!-- col-sm-6 -->
                    </div><!-- row -->
                    <div id="inputs-for-filters1">

                        <div class="form-group">
                            @Html.EditorFor(model => model.Filter)
                            @Html.LabelFor(model => model.Filter, "Filter Required?")
                            @Html.ValidationMessageFor(model => model.Filter)
                        </div>

                    </div>
                    <div id="inputs-for-filters2">

                        <div class="form-group">
                            @Html.EditorFor(model => model.Filter)
                            @Html.LabelFor(model => model.Filter, "Filter Required?")
                            @Html.ValidationMessageFor(model => model.Filter)
                        </div>

                    </div>
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label id="lbltipAddManufacturer">Select Manufacturer:</label> <label id="lbltipAddManufacturer2" style="display:none;">Enter Manufacturer:</label>   
                                <label id="hidemanufacturerbutton" style="float: right;"><i class="myClass fa fa-edit" id="manufacturer"></i></label>
                                <label id="shownewmanufacturerbutton" Style="float: right; display:none;"><i class="glyphicon glyphicon-remove-circle" id="manufacturer2"></i></label>
                                <div id="Manufacturer">
                                    @Html.DropDownListFor(model => model.ManufacturerID, (SelectList)ViewBag.ManufacturerDropDown, "Please Select From The List", new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.ManufacturerID, "", new { @class = "text-danger" })
                                </div>
                                <div class="js-manufacturer" style="display:none;">
                                    @Html.EditorFor(model => model.ManufacturerName.ManufacturerName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Name Here", disabled = "disabled" } })
                                    @Html.ValidationMessageFor(model => model.ManufacturerName.ManufacturerName, "", new { @class = "text-danger" })
                                </div>
                            </div>
                        </div><!-- col-sm-6 -->
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label id="lbltipAddModel">Select Model:</label> <label id="lbltipAddModel2" style="display:none;">Enter Model Type:</label>  
                                <label id="hidemodelbutton" style="float: right;"><i class="myClass fa fa-edit" id="model"></i></label>
                                <label id="shownewmodelbutton" Style="float: right; display:none;"><i class="glyphicon glyphicon-remove-circle" id="model2"></i></label>
                                <div id="Model">
                                    @Html.DropDownListFor(model => model.ModelID, (SelectList)ViewBag.ModelDropDown, "Please Select From The List", new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.ModelID, "", new { @class = "text-danger" })
                                </div>
                                <div class="js-model" style="display:none;">
                                    @Html.EditorFor(model => model.ModelName.ModelName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Name Here", disabled = "disabled" } })
                                    @Html.ValidationMessageFor(model => model.ModelName.ModelName, "", new { @class = "text-danger" })
                                </div>
                            </div>
                        </div><!-- col-sm-6 -->
                    </div><!-- row -->
                        <div class="row">
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label id="lbltipAddSupplier">Select Supplier:</label> <label id="lbltipAddSupplier2" style="display:none;">Enter Supplier:</label>  
                                    <label id="hidesupplierbutton" style="float: right;"><i class="myClass fa fa-edit" id="supplier"></i></label>
                                    <label id="shownewsupplierbutton" Style="float: right; display:none;"><i class="glyphicon glyphicon-remove-circle" id="supplier2"></i></label>
                                    <div id="Supplier">
                                        @Html.DropDownListFor(model => model.SupplierID, (SelectList)ViewBag.SupplierDropDown, "Please Select From The List", new { @class = "form-control" })
                                        @Html.ValidationMessageFor(model => model.SupplierID, "", new { @class = "text-danger" })
                                    </div>
                                    <div class="js-supplier" style="display:none;">
                                        @Html.EditorFor(model => model.SupplierName.SupplierName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Supplier Name Here", disabled = "disabled" } })
                                        @Html.ValidationMessageFor(model => model.SupplierName.SupplierName, "", new { @class = "text-danger" })
                                    </div>
                                </div>
                            </div><!-- col-sm-6 -->
                            <div class="col-sm-6">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.SerialNo, "Serial No:", new { @class = "control-label" })
                                    @Html.EditorFor(model => model.SerialNo, new { htmlAttributes = new { @class = "form-control" } })
                                    @Html.ValidationMessageFor(model => model.SerialNo, "", new { @class = "text-danger" })
                                </div>
                            </div><!-- col-sm-6 -->
                        </div><!-- row -->
                        <div class="row">
                            <div class="col-sm-6">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.PurchaseDate, "Purchase Date:", new { @class = "control-label" })
                                    @Html.TextBoxFor(m => m.PurchaseDate, new { @class = "form-control datepicker", autocomplete = "off" })
                                    @Html.ValidationMessageFor(model => model.PurchaseDate, "", new { @class = "text-danger" })
                                </div>
                            </div><!-- col-sm-6 -->
                            <div class="col-sm-6">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.PoNo, "Purchase OrderNo:", new { @class = "control-label" })
                                    @Html.EditorFor(model => model.PoNo, new { htmlAttributes = new { @class = "form-control" } })
                                    @Html.ValidationMessageFor(model => model.PoNo, "", new { @class = "text-danger" })
                                </div>
                            </div><!-- col-sm-6 -->
                        </div><!-- row -->
                        <div class="row">
                            <div class="col-sm-6">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.BudgetCodeID, "Budget Code:", new { @class = "control-label" })
                                    @Html.DropDownListFor(m => m.BudgetCodeID, (SelectList)ViewBag.BudgetsList, "Please Select From The List", new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.BudgetCodeID, "", new { @class = "text-danger" })
                                </div>
                            </div><!-- col-sm-6 -->
                            <div class="col-sm-6">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.Costing, "Cost:", new { @class = "control-label" })
                                    @Html.EditorFor(model => model.Costing, new { htmlAttributes = new { @class = "form-control" } })
                                    @Html.ValidationMessageFor(model => model.Costing, "", new { @class = "text-danger" })
                                </div>
                            </div><!-- col-sm-6 -->
                        </div><!-- row -->
                        <div class="row">
                            <div class="col-sm-6">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.TeamID, "Team:", new { @class = "control-label" })
                                    @Html.DropDownListFor(model => model.TeamID, ViewBag.TeamList as SelectList, "Please Select From The List", new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.TeamID, "", new { @class = "text-danger" })
                                </div>
                            </div><!-- col-sm-6 -->
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label id="lbltipAddStaff">Select Staff Member:</label> <label id="lbltipAddStaff2" style="display:none;">Enter Staff Member Name:</label>   
                                    <label id="hidestaffbutton" Style="float: right;"><i class="myClass fa fa-edit" id="staff"></i></label>
                                    <label id="shownewstaffbutton" Style="float: right; display:none;"><i class="glyphicon glyphicon-remove-circle" id="staff2"></i></label>
                                    <div id="Staff">
                                        @Html.DropDownListFor(model => model.StaffID, (SelectList)ViewBag.StaffDropDown, "Please Select From The List", new { @class = "form-control" })
                                        @Html.ValidationMessageFor(model => model.StaffID, "", new { @class = "text-danger" })
                                    </div>
                                    <div class="js-staff" style="display:none;">
                                        @Html.EditorFor(model => model.StaffName.StaffName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Name Here", disabled = "disabled" } })
                                        @Html.ValidationMessageFor(model => model.StaffName.StaffName, "", new { @class = "text-danger" })
                                    </div>
                                </div>
                            </div><!-- col-sm-6 -->
                        </div><!-- row -->
                    </div><!-- panel-body -->

                <div class="panel-footer">
                    <input type="submit" value="Create" class="btn btn-primary" />
                </div>

            </div>
        </div>
    }
</div><!-- panel -->

@section Scripts {
    <script src="~/Scripts/jquery-ui-1.10.3.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

        @Scripts.Render("~/bundles/jqueryval")

    <script>

        // Date Picker
        jQuery('#PurchaseDate').datepicker({ dateFormat: 'dd/mm/yy' });
        jQuery('#WarrantyEndDate').datepicker({ dateFormat: 'dd/mm/yy' });
        jQuery('#InspectionDate').datepicker({ dateFormat: 'dd/mm/yy' });
        jQuery('#InspectionDueDate').datepicker({ dateFormat: 'dd/mm/yy' });
        jQuery('#datepicker-inline').datepicker();

        jQuery('#datepicker-multiple').datepicker({
            numberOfMonths: 3,
            showButtonPanel: true
        });



        $(document).ready(function () {
            $("#inputs-for-filters1").hide();
            $("#inputs-for-filters2").hide();

            $("#AssetTypeID").change(function () {
                if ($("#AssetTypeID").val() == "3") {
                    $("#inputs-for-filters1").show();
                }
                else {
                    $("#inputs-for-filters1").hide();
                }
            });

            $("#ProductID").change(function () {
                if ($("#ProductID").val() == "24") {
                    $("#inputs-for-filters2").show();
                }
                else {
                    $("#inputs-for-filters2").hide();
                }
            });

        });



            $(document).ready(function () {
                $("#staff").click(function () {
                    $("#Staff").toggle();
                    $(".js-staff").toggle();
                    $('#lbltipAddStaff').toggle();
                    $('#lbltipAddStaff2').toggle();
                    $(".js-staff input[type='text']").attr("disabled", false);
                    $("#hidestaffbutton").toggle();
                    $("#shownewstaffbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#staff2").click(function () {
                    $("#Staff").toggle();
                    $(".js-staff").toggle();
                    $('#lbltipAddStaff').toggle();
                    $('#lbltipAddStaff2').toggle();
                    $(".js-staff input[type='text']").attr("disabled", true);
                    $("#hidestaffbutton").toggle();
                    $("#shownewstaffbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#model").click(function () {
                    $("#Model").toggle();
                    $(".js-model").toggle();
                    $('#lbltipAddModel').toggle();
                    $('#lbltipAddModel2').toggle();
                    $(".js-model input[type='text']").attr("disabled", false);
                    $("#hidemodelbutton").toggle();
                    $("#shownewmodelbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#model2").click(function () {
                    $("#Model").toggle();
                    $(".js-model").toggle();
                    $('#lbltipAddModel').toggle();
                    $('#lbltipAddModel2').toggle();
                    $(".js-model input[type='text']").attr("disabled", true);
                    $("#hidemodelbutton").toggle();
                    $("#shownewmodelbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#manufacturer").click(function () {
                    $("#Manufacturer").toggle();
                    $(".js-manufacturer").toggle();
                    $('#lbltipAddManufacturer').toggle();
                    $('#lbltipAddManufacturer2').toggle();
                    $(".js-manufacturer input[type='text']").attr("disabled", false);
                    $("#hidemanufacturerbutton").toggle();
                    $("#shownewmanufacturerbutton").toggle();
                });
            });


            $(document).ready(function () {
                $("#manufacturer2").click(function () {
                    $("#Manufacturer").toggle();
                    $(".js-manufacturer").toggle();
                    $('#lbltipAddManufacturer').toggle();
                    $('#lbltipAddManufacturer2').toggle();
                    $(".js-manufacturer input[type='text']").attr("disabled", true);
                    $("#hidemanufacturerbutton").toggle();
                    $("#shownewmanufacturerbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#product").click(function () {
                    $("#Product").toggle();
                    $(".js-product").toggle();
                    $('#lbltipAddProduct').toggle();
                    $('#lbltipAddProduct2').toggle();
                    $(".js-product input[type='text']").attr("disabled", false);
                    $("#hideproductbutton").toggle();
                    $("#shownewproductbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#product2").click(function () {
                    $("#Product").toggle();
                    $(".js-product").toggle();
                    $('#lbltipAddProduct').toggle();
                    $('#lbltipAddProduct2').toggle();
                    $(".js-product input[type='text']").attr("disabled", true);
                    $("#hideproductbutton").toggle();
                    $("#shownewproductbutton").toggle();
                });
            });


            $(document).ready(function () {
                $("#supplier").click(function () {
                    $("#Supplier").toggle();
                    $(".js-supplier").toggle(); 
                    $('#lbltipAddSupplier').toggle();
                    $('#lbltipAddSupplier2').toggle();
                    $(".js-supplier input[type='text']").attr("disabled", false);
                    $("#hidesupplierbutton").toggle();
                    $("#shownewsupplierbutton").toggle();
                });
            });

            $(document).ready(function () {
                $("#supplier2").click(function () {
                    $("#Supplier").toggle();
                    $(".js-supplier").toggle();
                    $('#lbltipAddSupplier').toggle();
                    $('#lbltipAddSupplier2').toggle();
                    $(".js-supplier input[type='text']").attr("disabled", true);
                    $("#hidesupplierbutton").toggle();
                    $("#shownewsupplierbutton").toggle();
                });
            });



    </script>
}

UPDATE

I now have the AssignmentID saving as 2, but it creates a new entry in the database rather than assigning two values to the same field

microchef
  • 89
  • 1
  • 11
  • Sorry, but make it clear. what is meant by `every time a new value is submitted to the model of Models` ? or `clinicalAssets.ModelName = clinicalAssets.ModelName;` If possible, share your action method and the way you post data from view to controller. – A. Nadjar Aug 15 '19 at 08:38
  • what does `clinicalAssets.ModelName = clinicalAssets.ModelName;` do? Show us your model please, does it have static members? – Train Aug 15 '19 at 21:46
  • Sorry wrong line I meant `clinicalAssets.AssetAssignmentID = String(2))` Why not try `"2"` – Train Aug 15 '19 at 21:53
  • @Train Sorry my fault i copied the the wrong text over, yes i tried "2" it doesnt work as explained. – microchef Aug 15 '19 at 21:59
  • Dear @microchef, it seems the input to your create action method should be of type Model, which is inside assets. Models namespace. Can you share create.cshtml view? – A. Nadjar Aug 16 '19 at 06:56
  • @A.Nadjar please see my updated question – microchef Aug 16 '19 at 11:35
  • 1
    it's a model inside of a model try `clinicalAssets.AssetAssignmentID.AssetAssignmentID = 2` it's an int not string – Train Aug 16 '19 at 13:45
  • Dear @microchef, this line in your action method is wrong, `clinicalAssets.AssetAssignmentID = "2";` because according to your ClinicalAssrt model class, those fields named Model Name and AssetAssignmentID are of type Model. Can you change them to string and int respectively? – A. Nadjar Aug 16 '19 at 15:37
  • @microchef, One important question here: do you expect to receive any value for AssetAssignmentID when the form is submitted? Did you set breakpoint in your create action to see if any received? – A. Nadjar Aug 16 '19 at 15:47
  • 1
    @microchef, none of your dropdowns were bound to AssetAssignmentID. If it's not possible to change Model Name and AssetAssignmentID to string and int, then inside the if clause, you may have `clinicalAssets.AssetAssignmentID = new Model {AssetAssignmentID =2 } ;` – A. Nadjar Aug 16 '19 at 15:55
  • @A.Nadjar yours and Train's solution both work, If i do a virtual reference in the ClinicalAsset model. But my issue with the reference is that EF wants to add a foreign key constraint i just want to post a numerical value to the field without any database referencing, not sure if this is possible ? – microchef Aug 16 '19 at 17:38
  • In your ClinicalAsset Model class, I see `public int? ProductID { get; set; }` and some others like that which are foreign keys to other tables. Correct? Before calling saveChanges method, make sure they have value, or initialize them in your code, naturally with a number already available in the corresponding table. If you don't need a particular relation between 2 tables, you know how to break that foreign key constraint, remove and re-add EF model again. – A. Nadjar Aug 16 '19 at 19:33
  • @A.Nadjar I just needed the [NotMapped] attribute to stop foreign key mapping – microchef Aug 19 '19 at 08:52
  • new Model {AssetAssignmentID =2 } only tries to create a new row, not adding to the existing modelname value – microchef Aug 19 '19 at 10:24
  • Please, set a break point on this if clause, `if (clinicalAssets.ModelName != null)` and see if you ever get into it? – A. Nadjar Aug 19 '19 at 13:37
  • Your ClinicalAsset type is a domain model and heavy object including relations to other tables. I see some issues with model binding in your cshtml. To resolve this problem, I suggest to create a viewmodel including only the fields needed to pass it from view to controller as soon as the form submits. Then if needed, inside the create method with http post annotation, create an instance of ClinicalAsset and map specific fields from received viewmodel into it to save in db. – A. Nadjar Aug 19 '19 at 14:19
  • Some useful threads : https://stackoverflow.com/questions/14124324/submitting-form-and-pass-data-to-controller-method-of-type-filestreamresult and https://stackoverflow.com/questions/8512799/asp-net-mvc-separate-viewmodel-for-post-action – A. Nadjar Aug 19 '19 at 14:20
  • I have viewmodels already in my application, however i don't see how using a viewmodel in this instance will work. My other option is to load the value of 2 into a hidden field to post back. – microchef Aug 21 '19 at 09:05

1 Answers1

0

Thanks to A.Nadjar & Train

Although i didn't need a Viewmodel the solution was to save the data with THE 1 TO MANY relationship saving first, followed by the main entity last, and also ensure the foreign key was created for the AssetAssignmentID in the model.

Code:

 if (ModelState.IsValid)
            {

                var newClinicalAsset = new ClinicalAsset();
                var NewModel = new Model(); 


                    if (clinicalAssetVM.AssetTypeID == 0)
                {

                }
                else
                {
                    newClinicalAsset.AssetTypeID = clinicalAssetVM.AssetTypeID;
                }



                if (clinicalAssetVM.ModelName != null)
                {

                    NewModel.ModelAssetAssignmentID = clinicalAssetVM.AssetAssignmentID.AssetAssignmentID;
                    NewModel.ModelName = clinicalAssetVM.ModelName.ModelName;
                    db.Models.Add(NewModel);
                    db.SaveChanges();
                }

                newClinicalAsset = new ClinicalAsset { ModelID = NewModel.ModelID, AssetTypeID = newClinicalAsset.AssetTypeID};
                db.ClinicalAssets.Add(newClinicalAsset);
                db.SaveChanges();
                return RedirectToAction("Details", "ClinicalAssets", new { ClinicalAssetID = clinicalAssetVM.ClinicalAssetID });
            }

microchef
  • 89
  • 1
  • 11