繁体   English   中英

将一个模型值分配给另一个

[英]Assign one model value to another

我有一个DropDownConfiguration模型,该模型从数据库中获取值并填充下拉列表。

模型:

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" })

我有另一个模型DetailsConfiguration,它具有需要保存到数据库中的所有字段。

 public class DetailsConfiguration
    {

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

    }

控制器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");

        }

无论如何有做类似的事情:

model.detailsConfig.Project = model.dropConfig.Project

我需要选择要通过DetailsConfiguration发布回数据库的Project。

您可以创建一个映射器,将DropDownConfiguration中的属性值设置为DetailsConfiguration

更改下拉列表时,会将选定的DropDownConfiguration发送到服务器。 您确切知道在这里可以期待哪些属性,因此可以执行以下操作:

[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();
}

请注意,必须确保在选择下拉项时发送一个DropDownConfiguration对象。 您也只能像这样发送所需的值:

[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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM