razor Column_ViewName_TextTruncate
Column_ViewName_TextTruncate
@{ Html.RenderPartial(TemplateHelper.Column_ViewName_TextTruncate, TemplateHelper.BuildTextTruncate("ContractSubjectInfo", "班课在读课程", "100px")); }
razor 带有捆绑的Umbraco布局
带有捆绑的Umbraco布局
Layout.cshtml
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
@Styles.Render("~/bundles/styles") // <- render styles bundle
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/js") // <- render js bundle
</body>
</html>
razor DataTable - v2(嵌套)
controller.cs
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetPolicyInsuredCoverageList(int policyInsuredId)
{
var policyInsuredCoverageDtoList = _policyAppService.GetPolicyInsuredCoverageListByInsuredId(policyInsuredId);
var nestedList = PolicyInsuredCoverageViewModel.LoadFrom(policyInsuredCoverageDtoList);
var gridReadyJson = new JArray();
foreach (var item in nestedList)
{
var jsonChildObj = "";
var counter = 0;
if (item.Childs != null)
{
foreach (var child in item.Childs)
{
counter += 1;
if (counter > 1) { jsonChildObj += ","; }
jsonChildObj +=
"{" +
"\"data\": " +
"{" +
"\" \": \" \"," +
"\"Teminat\": \"" + child.CoverageName + "\"," +
"\"Net Prim\": \"" + MyHelpers.FormatToTurkishNumericString(child.NetPremium) + "\"," +
"\"Prim\": \"" + MyHelpers.FormatToTurkishNumericString(child.Premium) + "\"," +
"\"Komisyon\": \"" + MyHelpers.FormatToTurkishNumericString(child.Commission) + "\"," +
"\"Vergi\": \"" + MyHelpers.FormatToTurkishNumericString(child.TaxAmount) + "\"," +
"\"Brüt Prim\": \"" + MyHelpers.FormatToTurkishNumericString(child.GrossPremium) + "\"" +
"}, " +
"\"kids\": []" +
"}";
}
}
var jsonParentObj = "" +
"{" +
"\"data\": " +
"{" +
"\"Teminat\": \"" + item.CoverageName + "\"," +
"\"Net Prim\": \"" + MyHelpers.FormatToTurkishNumericString(item.NetPremium) + "\"," +
"\"Prim\": \"" + MyHelpers.FormatToTurkishNumericString(item.Premium) + "\"," +
"\"Komisyon\": \"" + MyHelpers.FormatToTurkishNumericString(item.Commission) + "\"," +
"\"Vergi\": \"" + MyHelpers.FormatToTurkishNumericString(item.TaxAmount) + "\"," +
"\"Brüt Prim\": \"" + MyHelpers.FormatToTurkishNumericString(item.GrossPremium) + "\"" +
"}, " +
"\"kids\": [" + jsonChildObj + "]" +
"}";
var o = JObject.Parse(jsonParentObj);
gridReadyJson.Add(o);
}
return Json(gridReadyJson);
}
view.cshtml
@model int
@{
@Html.AntiForgeryToken()
ViewBag.Title = L("InsuredPremiumDetail");
var controllerName = ViewContext.RouteData.Values["controller"].ToString();
var pageData = Url.Action("GetPolicyInsuredCoverageList", @controllerName);
}
@section PageStyleInclude {
}
<style>
.tableWrapper table.dataTable tr.rowHover:hover {
background-color: rgb(243, 244, 246) !important;
}
.rightAlign {
text-align: right;
}
tr.details {
background-color: #eee !important;
}
tr.details table tr th:nth-of-type(1) {
padding-left: 41px !important;
}
.empty-placeholder {
height: 320px;
}
.expanderCol {
width: 1px !important;
}
</style>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">@ViewBag.Title</h4>
</div>
<div class="modal-body">
<div id="nestedTable" class="table-container">
<div class="empty-placeholder"></div>
</div>
</div>
@section PageScriptInclude {
}
<script>
var __RequestVerificationToken = function () { return $('input[name="__RequestVerificationToken"]').val(); }
$(document).ready(function() {
var gridData = {
"__RequestVerificationToken": __RequestVerificationToken,
policyInsuredId: @Model
};
var xhrParams = {
requestMethod: "POST",
url: "@pageData",
dataType: "json",
data: gridData,
formToValidateObj: null,
blockElem: ".page-container",
iconOnly: false,
message: "Yükleniyor...",
unblockOnComplete: true
};
var xhrPromise = jqAjax(xhrParams);
xhrPromise.done(function(xhr) {
if (xhr.success && xhr.result) {
//console.log(JSON.stringify(xhr.result));
$(".empty-placeholder").hide();
var tableSettings = {
language: {
url: "/Scripts/DataTables/Turkish.json"
},
ordering: true,
info: false,
searching: false,
paging: false,
pageLength: 7,
lengthChange: false,
//lengthMenu: [[10, 50, 100], [10, 50, 100]],//[[10, 50, 100, -1], [10, 50, 100, "Hepsi"]]
order: [[2, "desc"]],/* 0-based indexing */
columnDefs: [
{
targets: 0,
orderable: false,
className: "expanderCol"
},
{
targets: 1,
type: "html",
render: function (data, type, full, meta) {
if (isDetailTable(meta.settings)) {
return "<div style='padding-left: 31px'>" + data + "</div>";
}
return data;
}
},
{
targets: [2, 3, 4, 5, 6],
className: "rightAlign"
}
],
//createdRow: function (row, data, dataIndex) {
// $(row).attr('id', data.id);/* needed for selecting the correct selectbox item in edit mode */
//}
initComplete: function(settings, json) {
var dtApi = this.api();
if (isDetailTable(settings)) {
/* hide the expand icon column */
dtApi.column(0).visible(false);
/* change header title */
$(dtApi.column(1).header()).text('Teminat Dağılımı');
} else {
/* change header title */
$(dtApi.column(1).header()).text('Ana Teminatlar');
/* dynamically add the total row to grid */
var netPremium, premium, commission, tax, grossPremium = 0;
var amountStr, amountFloat;
dtApi.rows().every(function(rowIdx, tableLoop, rowLoop) {
var data = this.data();
$.each(data, function(ix, val) {
amountStr = val.replace(",", "|").replace(".", ",").replace("|", ".");
amountFloat = DOLLAR({ amount: amountStr, precision: 2, symbol: false }).format();
switch (ix) {
case 2:
netPremium = currency(netPremium).add(amountFloat);
break;
case 3:
premium = currency(premium).add(amountFloat);
break;
case 4:
commission = currency(commission).add(amountFloat);
break;
case 5:
tax = currency(tax).add(amountFloat);
break;
case 6:
grossPremium = currency(grossPremium).add(amountFloat);
break;
}
});
});
var rowObj = {};
rowObj[0] = " ";
rowObj[1] = "<b>TOPLAM</b>";
rowObj[2] = LIRA({ amount: netPremium, precision: 2, symbol: false }).format();
rowObj[3] = LIRA({ amount: premium, precision: 2, symbol: false }).format();
rowObj[4] = LIRA({ amount: commission, precision: 2, symbol: false }).format();
rowObj[5] = LIRA({ amount: tax, precision: 2, symbol: false }).format();
rowObj[6] = LIRA({ amount: grossPremium, precision: 2, symbol: false }).format();
dtApi.row.add(rowObj).draw();
}
},
drawCallback: function(settings) {
//$("#tab_0_wrapper tr.rowHover").on("click", function () {
// setTimeout(function() {
// var $column = $("tr.details > td.details table> thead > tr > th:nth-child(2)");
// $column.click();
// if ($column.hasClass("sorting_asc")) { $column.click(); }
// }, 50);
//});
}
};
/* https://github.com/AndrejGajdos/nested-datatables */
var nestedTable = new lib.NestedTables("nestedTable", xhr.result, tableSettings);
nestedTable.initializeTableHierarchy();
/* hack that sorts the nested table in descending order */
//setTimeout(function() {
// $("#tab_0_wrapper tr.rowHover").on("click", function () {
// setTimeout(function() {
// $("tr.details > td.details table> thead > tr > th.sorting_asc").click();
// }, 50);
// });
//}, 50);
}
});
});
var isDetailTable = function (settings) {
return $(settings.oInstance["0"].parentElement.parentElement.parentElement).hasClass("details");
}
</script>
razor Excel导出/导入
Model.cs
[AutoMap(typeof(SicknessRiskySickness))]
public class SicknessRiskySicknessViewModel
{
public byte SicknessMainCategory { get; set; }
public byte SicknessCategory { get; set; }
public byte SicknessSubCategory { get; set; }
public string RiskySicknessId { get; set; }
[AdditionalMetadata("label", "Hepsini temizle ve baştan yükle.")]
[AdditionalMetadata("info", "[riskySicknessId] kolonundaki hastalık kodlarıyla ilişkili 
 " +
"tüm kayıtlar silinir ve sadece listeli olanlar aktarılır.")]
[AdditionalMetadata("checked", "")]// send "checked" to check the box by default.
public bool ChkBoxPurge { get; set; }
}
public class SicknessRiskySicknessImport
{
public string ImportType { get; set; }
public List<SicknessRiskySicknessViewModel> ImportList { get; set; }/* name must match the model being passed from client via json */
}
Controller.cs
public async Task<ActionResult> ExportData(string riskySicknessId)
{
var q1 = _productManager.GetAllSicknessRiskySicknesses();
if (!string.IsNullOrWhiteSpace(riskySicknessId))
{
q1 = q1.Where(r => r.RiskySicknessId.Equals(riskySicknessId));
}
var sicknessRiskySicknessesList = await q1.ToListAsync();
/* Join Lists as IENumerable */
var q2 = from srs in sicknessRiskySicknessesList
select new
{
srs.RiskySicknessId,
srs.SicknessMainCategory,
srs.SicknessCategory,
srs.SicknessSubCategory
};
/* Sort Ordering */
q2 = q2.OrderBy(x => x.SicknessMainCategory)
.ThenBy(x => x.SicknessCategory)
.ThenBy(x => x.SicknessSubCategory);
/* Done - return the response as json */
return Json(q2.ToList(), JsonRequestBehavior.AllowGet);
}
[HttpPost]
[ValidateAntiForgeryToken]
[HandleException]
/* param name 'data' must match the object name being passed from client via json */
public async Task<ActionResult> ImportData(SicknessRiskySicknessImport excelImportData)
{
if (excelImportData.ImportType == "purge")
{
/* Group and find distinct RiskySicknessIds, then delete all records that have the same RiskySicknessIds. */
var sicknessRiskySicknessListToPurge = excelImportData.ImportList.GroupBy(x => x.RiskySicknessId).Select(x => x.FirstOrDefault()).ToList();
foreach (var sicknessRiskySickness in sicknessRiskySicknessListToPurge)
{
await _productManager.DeleteSicknessesByRiskGroup(sicknessRiskySickness.RiskySicknessId);
}
}
var rowIndex = 1;
var numOfProcessedRecords = 0;
var missingRiskySicknessIds = new List<string>();
try
{
foreach (var row in excelImportData.ImportList)
{
rowIndex += 1;
var sicknessRiskySickness = Mapper.Map(row, (SicknessRiskySickness)null);
var riskySicknessId = sicknessRiskySickness.RiskySicknessId;
var riskySickness = await _productManager.GetRiskySicknessFirstOrDefault(riskySicknessId);
if (riskySickness != null) // check if the RiskySicknessId field matches a RiskySickness on record.
{
switch (excelImportData.ImportType)
{
case "purge":
await _productManager.CreateSicknessRiskySicknessAsync(sicknessRiskySickness);
numOfProcessedRecords += 1;
break;
case "append":
var sicknessRiskySicknessFromDb =
await _productManager.GetSicknessRiskySicknessByCompositeKey(sicknessRiskySickness);
if (sicknessRiskySicknessFromDb == null) // create new record if such record does not exist
{
await _productManager.CreateSicknessRiskySicknessAsync(sicknessRiskySickness);
numOfProcessedRecords += 1;
}
break;
}
}
else
{
bool containsRiskySicknessId = missingRiskySicknessIds.Any(x => riskySicknessId.Contains(x));
if (!containsRiskySicknessId)
{
missingRiskySicknessIds.Add(riskySicknessId);
}
}
}
}
catch (Exception e)
{
throw new UserFriendlyException($"{rowIndex} nolu satırdaki kayıtta hata oluştu : " + e.Message);
}
if (missingRiskySicknessIds.Count > 0)
{
string missingIds = "";
foreach (var id in missingRiskySicknessIds) { missingIds += ", " + id; }
missingIds = missingIds.Substring(2);
return Json("İçe aktarma kısmen tamamlandı. Toplam <b>" + numOfProcessedRecords + "</b> kayıt için işlem yapıldı. " +
missingIds + " kodlu hastalık grupları tanımlı olmadığı için aktarılamadı.");
}
return Json("İçe aktarma başarıyla tamamlandı. Toplam <b>" + numOfProcessedRecords + "</b> kayıt için işlem yapıldı.");
}
index.cshtml
@{
var exportUrl = Url.Action("ExportData", controllerName, new { area = (string)areaName });
}
<button type="button" id="import-file" class="btn blue-madison" onclick="toggleFileUploadModal();">
<i class="fa fa-download"></i> İçe Aktar
</button>
<button type="button" id="back-up" class="btn blue-madison"
onclick="exportToExcel('@exportUrl', '@ViewBag.Title', { sicknessId: $('#Sickness').val() })">
<i class="fa fa-upload"></i> Dışa Aktar
</button>
@* Upload excel modal partial view *@
@Html.Partial("_ModalFileUpload", modelData)
@* Makes the import action url available to the excel-export-import.js file *@
<input type="hidden" id="importUrl" value="@importUrl" />
@* Upload file modal *@
<div id='ajaxModal' class='modal fade in'>
<div class="modal-dialog">
<div class="modal-content">
<div id='ajaxModalContent'></div>
</div>
</div>
</div>
@section PageScriptInclude {
<script src="~/Scripts/modalform.js"></script>
<!-- used by excel import/export functionalities -->
<script src="~/Scripts/export-xlsx/Blob.js"></script>
<script src="~/Scripts/export-xlsx/FileSaver.js"></script>
<script src="~/Scripts/export-xlsx/xlsx.full.min.js"></script>
<script src="~/js/utils/excel-export-import.js"></script>
}
razor 的RouteData
RouteData.cshtml
@{
var areaName = ViewContext.RouteData.DataTokens["area"];
var controllerName = ViewContext.RouteData.Values["controller"].ToString();
var actionName = ViewContext.RouteData.Values["action"].ToString();
@* -- or -- *@
var actionName = ViewContext.RouteData.GetRequiredString("action");
}
razor 脚本包含
Modal.cshtml
@using Health.Web.Web.Framework
@**************@
@* MODAL PAGE *@
@**************@
</script>
....
</script>
@Html.RenderScripts()
@**********@
@* EDITOR *@
@**********@
@Html.Script(
@<script>
$(document).ready(function () {
});
</script>
)
Page.cshtml
@using Health.Web.Web.Framework
@***************@
@* PARENT PAGE *@
@***************@
@section PageScriptContent {
@Html.RenderScripts()
}
@*********************@
@* PARTIAL OR EDITOR *@
@*********************@
@Html.Script(
@<script>
$(document).ready(function () {
});
</script>
)
razor 模态内部的剑道网格
kendo grid di dalam莫代尔大
example.cshtml
<!-- Modal Action Add to Existing Transfer -->
<div class="modal fade modal-large" id="modalAddToExistingTransfer" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><span>@UIResources.AddExistingTransfer</span></h5>
</div>
<div class="modal-body">
<div class="table-responsive full-height1">
<div class="modal-kendogrid" id="tradingPeriodGrid"></div>
</div>
</div>
<div class="modal-footer">
<button id="modalAddToExistingTransferButtonOk" type="button" class="btn btn-primary pull-right disabled">@UIResources.Yes</button>
<button id="modalAddToExistingTransferButtonCancel" class="btn btn-secondary pull-right" data-dismiss="modal">@UIResources.Cancel</button>
</div>
</div>
</div>
</div>
<!--
Perhatikan : modal-large, modal-kendogrid
-->
razor 文本自动计算长度
text.cshtml
<div class="col-1 input-title must">
状态说明
</div>
<div class="col-3 input-content">
<div class="input-group">
<input type="text" class="form-control " id="StockStatusNote" name="StockStatusNote" maxlength="11">
<div class="input-group-append">
<div class="input-group-text">
<span class="input-group-addon" id="StockStatusNote_length"></span>
</div>
</div>
</div>
</div>
<script>
$(function() {
$("#StockStatusNote").bind("keyup",
function() {
getLength("StockStatusNote", "StockStatusNote_length", "11");
});
});
</script>
razor 编辑
edit.cshtml
@using ManagePortal.Bll.Helper
@using ManagePortal.Common
@using ManagePortal.Model;
@{
ViewBag.Title = "现金流编辑";
Layout = "~/Views/Shared/_LayoutManage.cshtml";
}
@{
tab_CashFlowItem cashFlowItem = ViewBag.CashFlowItem;
}
<form id="dataform">
<div class="row level1-content animated zoomIn">
<div class="col-12 level2-title">
<h5>基本信息</h5>
</div>
<div class="level2-content">
<div class="col-1 input-title must">
校区
</div>
<div class="col-5 input-content">
<select class="form-control select2control" id="SchoolId" name="SchoolId" >
@foreach (tab_School school in (IEnumerable<tab_School>)ViewBag.Schools)
{
if(cashFlowItem.SchoolId==school.SchoolId)
{
<option value="@school.SchoolId" selected="selected" city="@school.City">@school.SimpleName</option>
continue;
}
<option value="@school.SchoolId" city="@school.City">@school.SimpleName</option>
}
</select>
</div>
<div class="clearfix"></div>
<div class="col-1 input-title must">
类型
</div>
<div class="col-2 input-content">
<select class="form-control select2control" id="CashFlowItemTypeDicId" name="CashFlowItemTypeDicId">
<option value="">所有类型</option>
@{
if (DicHelper.GetDic(null, EnumInfo.DicType.CashFlowItemType.ToString(), true, out List<tab_Dic> dics))
{
foreach (tab_Dic dic in dics)
{
if (cashFlowItem.CashFlowItemTypeDicId == dic.DicId)
{
<option value="@dic.DicId" selected="selected">@dic.Display</option>
continue;
}
<option value="@dic.DicId">@dic.Display</option>
}
}
}
</select>
</div>
<div class="col-1 input-title must">
金额
</div>
<div class="col-2 input-content">
<div class="input-group">
<input type="text" class="form-control text-right" id="Amount" name="Amount" onkeyup="displayNum(this);" placeholder="收入(+)\支出(-)" value="@cashFlowItem.Amount" />
<div class="input-group-append">
<div class="input-group-text">
元
</div>
</div>
</div>
</div>
<div class="col-1 input-title must">
发生日期
</div>
<div class="col-2 input-content">
<input type="text" id="PayDate" name="PayDate" class="form-control datetimecontrol" placeholder="" value="@cashFlowItem.PayDate.ToString("yyyy-MM-dd")">
<i class="fa fa-times datetimeCancel-detail" onclick="clearSingleTime('PayDate')"></i>
</div>
<div class="clearfix"></div>
<div class="col-1 input-title">
描述
</div>
<div class="col-11 input-content">
<textarea type="text" class="form-control" id="Note" name="Note" rows="2">@cashFlowItem.Note</textarea>
</div>
</div>
</div>
<div class="row justify-content-center footer-line animated slideInUp">
<div class=" col-6 ">
<a class="btn btn-info btn-save-bottom progress-button" id="btn_progress_save">保存</a>
</div>
<div class="clearfix"></div>
</div>
</form>
@section scripts
{
<script type="text/javascript">
$(document).ready(function() {
$("#dataform").validate({
onfocusout: false,
onkeyup: false,
onchange: false,
onsubmit: false,
onclick: false,
focusInvalid: true,
invalidHandler: function() {
$(this).focus();
},
rules: {
SchoolId: { required: true },
CashFlowItemTypeDicId: { required: true },
Amount: { required: true },
PayDate: { required: true },
},
messages: {
SchoolId: { required: "校区必选" },
CashFlowItemTypeDicId: { required: "类型" },
Amount: { required: "金额" },
PayDate: { required: "发生日期 " },
},
showErrors: function(errorMap, errorList) {
var msg = "";
var errorControl = '';
$.each(errorList,
function(i, v) {
msg += (`● ${v.message}<br />`);
if (errorControl === '')
errorControl = v.element;
});
if (msg !== "")
alertError(this.numberOfInvalids(), msg, errorControl);
}
});
});
@*提交函数*@
function save() {
if ($("#dataform").valid()) {
var form = $("#dataform");
var formCollection = form.serialize()+"&id=@cashFlowItem.CashFlowItemId";
$.post('Edit', formCollection, function(data) {
result(data);
});
return true;
} else
return false;
}
</script>
}
razor 创造
create.cshtml
@using ManagePortal.Bll.Helper
@using ManagePortal.Common
@using ManagePortal.Model;
@{
ViewBag.Title = "现金流添加";
Layout = "~/Views/Shared/_LayoutManage.cshtml";
}
<form id="dataform">
<div class="row level1-content animated zoomIn">
<div class="col-12 level2-title">
<h5>基本信息</h5>
</div>
<div class="level2-content">
<div class="col-1 input-title must">
校区
</div>
<div class="col-5 input-content">
<select class="form-control select2control" id="SchoolId" name="SchoolId" >
<option value="">请选择</option>
@foreach (tab_School school in (IEnumerable<tab_School>)ViewBag.Schools)
{
if (!string.IsNullOrWhiteSpace(Request["SchoolId"]))
{
if (Request["SchoolId"] == school.SchoolId.ToString())
{
<option value="@school.SchoolId" selected="selected" city="@school.City">@school.SimpleName</option>
continue;
}
}
<option value="@school.SchoolId" city="@school.City">@school.SimpleName</option>
}
</select>
</div>
<div class="clearfix"></div>
<div class="col-1 input-title must">
类型
</div>
<div class="col-2 input-content">
<select class="form-control select2control" id="CashFlowItemTypeDicId" name="CashFlowItemTypeDicId">
<option value="">所有类型</option>
@{
if (DicHelper.GetDic(null, EnumInfo.DicType.CashFlowItemType.ToString(), true, out List<tab_Dic> dics))
{
foreach (tab_Dic dic in dics)
{
<option value="@dic.DicId">@dic.Display</option>
}
}
}
</select>
</div>
<div class="col-1 input-title must">
金额
</div>
<div class="col-2 input-content">
<div class="input-group">
<input type="text" class="form-control text-right" id="Amount" name="Amount" onkeyup="displayNum(this);" placeholder="收入(+)\支出(-)" />
<div class="input-group-append">
<div class="input-group-text">
元
</div>
</div>
</div>
</div>
<div class="col-1 input-title must">
发生日期
</div>
<div class="col-2 input-content">
<input type="text" id="PayDate" name="PayDate" class="form-control datetimecontrol" placeholder="">
<i class="fa fa-times datetimeCancel-detail" onclick="clearSingleTime('PayDate')"></i>
</div>
<div class="clearfix"></div>
<div class="col-1 input-title">
描述
</div>
<div class="col-11 input-content">
<textarea type="text" class="form-control" id="Note" name="Note" rows="2"></textarea>
</div>
</div>
</div>
<div class="row justify-content-center footer-line animated slideInUp">
<div class=" col-6 ">
<a class="btn btn-info btn-save-bottom progress-button" id="btn_progress_save">创建</a>
</div>
<div class="clearfix"></div>
</div>
</form>
@section scripts
{
<script type="text/javascript">
$(document).ready(function() {
$("#dataform").validate({
onfocusout: false,
onkeyup: false,
onchange: false,
onsubmit: false,
onclick: false,
focusInvalid: true,
invalidHandler: function() {
$(this).focus();
},
rules: {
SchoolId: { required: true },
CashFlowItemTypeDicId: { required: true },
Amount: { required: true },
PayDate: { required: true },
},
messages: {
SchoolId: { required: "校区必选" },
CashFlowItemTypeDicId: { required: "类型" },
Amount: { required: "金额" },
PayDate: { required: "发生日期 " },
},
showErrors: function(errorMap, errorList) {
var msg = "";
var errorControl = '';
$.each(errorList,
function(i, v) {
msg += (`● ${v.message}<br />`);
if (errorControl === '')
errorControl = v.element;
});
if (msg !== "")
alertError(this.numberOfInvalids(), msg, errorControl);
}
});
});
@*提交函数*@
function save() {
if ($("#dataform").valid()) {
var form = $("#dataform");
var formCollection = form.serialize();
$.post('Create', formCollection, function(data) {
result(data);
});
return true;
} else
return false;
}
</script>
}