我是 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> <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 个视图模型中,而且 - 一个数据是具有数据表值的数组,另一组数据来自文本框。