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">&times;</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 &#013; " +
                              "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 += (`●&nbsp;${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 += (`●&nbsp;${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>
}