1

我是 MVC 的新手。我有一个带有 3 个文本框和一个数据表的页面。我想将这些数据表和文本框值发送到控制器中,因为它们位于 2 个不同的视图模型中。

我的视图模型:

  public class CalenderVM
    {
        public string CalenderYear { get; set; }

        public string Description { get; set; }

        public string Code { get; set; }

    }

  public class DetailVM
    {
        public DateTime [] CalenderDate { get; set; }

        public string[] Description { get; set; }
    }

Calendaryear、Description、Code 是我的文本框。

我使用脚本中的日历数据加载我的数据表,并在我的数据表中获得很少的数据。

我的表代码:

@model IList<Model.ViewModel.DetailVM>
...
@using (Html.BeginForm("Create", "Master", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
<div class="col-lg-3">
     <label>Description</label>
     @Html.TextBox("Description", null, new { @class = "form-control", @placeholder = "Enter Description" })
 </div>
 <div class="col-lg-3">
     <label>Code</label>
    @Html.TextBox("Code", null, new { @class = "form-control", @placeholder = "Enter Code" })
 </div>
 <div class="col-lg-3 text-center">
     <br />
     <input id="chkBoxIsActive" name="chkBoxIsActive " type="checkbox" />
     <label>Is Active</label>
</div>
 <table cellspacing="1" cellpadding="2" style="width: 100%;" id="CalendarSelection" class="table table-striped table-hover table-bordered table-hd">
 <thead>

     <tr class="gridheader">
         <td valign="middle" align="center" style="width: 2%;"></td>
         <td style="width: 50%;">Calendar Date</td>
         <td style="width: 50%;">Description</td>
     </tr>
 </thead>
 <tbody>
     <tr>
         <td></td>
         <td></td>
         <td></td>
     </tr>
 </tbody>
</table>
<div class="btn-group">
<button type="submit" id="btnSave" onclick="Save();" name="btnSave" class="btn btn-block btn-success btn-flat"><span class="hide-on-mobile">Save</span>&nbsp;<i class="fa fa-save"></i></button>
</div>
}

我尝试通过模型

@if (Model != null) {
  foreach (var obj in Model.LCDetailVM)
  {
  <tr>
      <td></td>
      <td>@obj.CalenderDate</td>
      <td>@obj.Description</td>
    </tr>
      }
  }  

主控制器

 [HttpGet]
        public ActionResult Create()
        {
            return View();
        }
 [HttpPost]
        public ActionResult Create(string[] data)
        {
            return View();
        }

我什至尝试过使用 JSON:

 <script type="text/javascript">
    function gettoken() {
            var token = '@Html.AntiForgeryToken()';
            token = $(token).val();
            return token;
        }
    $("#btnSave").on('click', function () {
          var table = $('#CalendarSelection').DataTable();
            if (!table.data().any()) {
                alert('Empty table');
            }
            else {
                var dd = table.rows().data().toArray();
                var data = new Array();
                var data1 = new Array();
                var CalendarData = {};
                var HeaderData = {};
                HeaderData.CalendarYear = document.getElementById("CalendarYear").value;
                HeaderData.Description = document.getElementById("Description").value;
                HeaderData.Code = document.getElementById("Code").value;
                data1.push(HeaderData);

                $.each(dd, function (index, value) {
                    CalendarData.CalenderDate = value[1];
                    CalendarData.Description = value[2];
                    data.push(CalendarData);
                });
                //data.push(HeaderData);
               // var model = { LeaveCalenderDetailVM: data, LeaveCalenderVM:data1 };
                $.ajax({
                    type: "POST",
                    url: "/LeaveMgmt/Create",
                    contentType: "application/json;",
                    headers: { 'RequestVerificationToken': gettoken() },
                    data: JSON.stringify(data),
                    //data: { JSON.stringify(data), JSON.stringify(data1) },
                    //data1: JSON.stringify(HeaderData),//,data1
                    success: function () {
                        alert('success');
                    },
                    error: function () {
                        alert('failure');
                    }
                });
            }   
    });
 </script>

public ActionResult Create(List<DetailVM> CalendarData, CalenderVM HeaderData)
        { 
            return View();
        }

我尝试了各种方法,但不知道如何将数据从视图传递到控制器,因为它们在 2 个视图模型中,而且 - 一个数据是具有数据表值的数组,另一组数据来自文本框。

4

0 回答 0