ASP. NET MVC C# динамически создавать поля из частичного просмотра и сохранять в контроллере (ссылка на модель) - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь связать элементы карты задания с моделью карты задания.

Я не полностью asp, как элементы могут быть сгенерированы либо для модели Jobcard, либо для модели JobcardItems, которая будет использоваться в функция сохранения.

Модель Jobcard: это модель, сгенерированная из базы данных с использованием Entity Framework

namespace Amax.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Jobcard
    {
        public long JCId { get; set; }
        public Nullable<long> ClientId { get; set; }
        public Nullable<long> ContactId { get; set; }
        public string ContactNo { get; set; }
        public string Email { get; set; }
        public string VatNo { get; set; }
        public Nullable<bool> SLA { get; set; }
        public string Address { get; set; }
        public Nullable<System.DateTime> TofOrder { get; set; }
        public Nullable<System.DateTime> TofCompletion { get; set; }
        public Nullable<long> ClientSigId { get; set; }
        public string CSignature { get; set; }
        public Nullable<System.DateTime> ClientSigDate { get; set; }
        public Nullable<long> USigId { get; set; }
        public string USignature { get; set; }
        public string USigDate { get; set; }
        public Nullable<int> StatusId { get; set; }

        public List<JobCardItem> Item { get; set; }
    }
}

Просмотр модели -> Просмотр созданной модели

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web; 

namespace Amax.Models
{
    public class ViewModel
    {
        public Jobcard Jobcard { get; set; }
        public Client Client { get; set; }
        public Contact Contact { get; set; }
        public JobCardItem JobCardItem { get; set; }
        public Status Status { get; set; }
        public User Users { get; set; }
    }
}

JobItems представление - это частичное представление для динамического добавления строк полей ввода для добавления элементов в карту задания

@using Amax.Models

    <br />
<div class="row">
    <div class="col-md-6 col-sm-6">
        <div class="row">
            <div class="col-md-4 col-sm-4">
                <input class="form-control" type="text" id="UnitAmount" aname="UnitAmount" />
            </div>
            <div class="col-md-8 col-sm-8"> <textarea class="form-control" id="description_1"></textarea></div>
        </div>
    </div>
    <div class="col-md-6 col-sm-6">
        <div class="row">
            <div class="col-md-5 col-sm-5"> <input class="form-control" id="unitprice_1" /></div>
            <div class="col-md-5 col-sm-5"> <input class="form-control" id="total_1" /></div>
        </div>
    </div>
</div>
<br />

представление карты задания Представление, в котором поля динамически добавляются в элемент JobItems Div

...
 <div class="row" id="JobItems">
                            @Html.EditorFor(model => model.Item)
                        </div>
    ...
@section Scripts{

    <script type="text/javascript">
            $('#btnAdd').on("click", function () {
                event.preventDefault();
                $.ajax({
                    async: true,
                    data: $('#Jobcard').serialize(),
                    type: 'POST',
                    url: '/Home/AddJobcardItem',
                    success: function (PartialView) {
                        $('#JobItems').append(PartialView);
                    }
                });
            });
            $(function () {
                var Styles = "";
                $.ajax({
                    url: "/Content/bootstrap.css",
                    success: function (data) {
                        Styles = data;
                        console.log(Styles);
                    }
                });
                $("#btnSubmit").click(function () {
                    $('#Styles').val("<style>" + Styles + "</style>");
                    $('#ExportData').val($("#JobCard").html());
                });
            });
    </script>
}

Функция сохранения в домашнем контроллере

[System.Web.Http.HttpPost]
public void SaveJobcard(Jobcard Jobcard, JobCardItem jobItems)
{
        if (ModelState.IsValid)
        {
            try
            {
                var context = new DBModel();
                context.Jobcards.Add(Jobcard);
                context.SaveChanges();
            }
            catch (Exception ex)
            {
            }

            return;
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...