.net mvc 视图提交list表单 后端action接收list表单


直接上代码

重要代码为红色部分;

视图代码如下:

@using DFCrm.UI.Web.Model
@using DFCrm.Domain.Entities.Bases
@using DFCrm.Domain.Entities.KpiBases
@using DFCrm.Infrastructure.Tokens
@using DFCrm.Domain.Entities.DepartmentPositions

@model List<KpiBaseTeam>
@{
    ViewBag.Title = "设置班级业绩指标";
    ViewBag.Column = "基地";
    Layout = "~/Views/Shared/_HomeLayout.cshtml";

    EmployeeToken token = ViewBag.Token;
    List<PermissionOperationEnum> permissions = ViewBag.Permissions;

    List<Base> bases = ViewBag.Bases;
    //List<KpiBaseTeam> kpibaseTeams = ViewBag.KpiBaseTeams;

    //#region 修改处理
    //if (Model.Count>0&& Model[0].Team!=null&& Model[0].Team.BaseId > 0)
    //{
    //    //基地
    //    if (!bases.Contains(Model[0].Team.Base))
    //    {
    //        bases.Add(Model[0].Team.Base);
    //    }
    //}
    //#endregion

    string fromUrl = !string.IsNullOrEmpty(Request.QueryString["fromUrl"]) ? Request.QueryString["fromUrl"] : Request.UrlReferrer != null ? Request.UrlReferrer.ToString() : null;
    string thisUrl = Request.Url != null ? Request.Url.ToString() : null;
}
<script type="text/javascript">
    $(document).ready(function (e) {
        selectedMenuWithPath(e, "/KpiBaseTeam");

        $("#btnClickCheck").click(function () {
            var baseId = $("#baseId").val();
            if (baseId == null || baseId == "" || baseId == 0) {
                alert("请选择基地")
                return false;
            }
        });
    });
script>

<script>
    function setDate(num) {
        //当前日期
        var d = new Date();
        //alert(d.toLocaleDateString())
        //月初
        var f = d.setDate(1);
        f = new Date(f);
        f = f.setMonth(num);
        f = new Date(f);
        //alert(f.toLocaleDateString());
        $("#startDate").val(f.format("yyyy-MM-dd"));

        //月末
        var e = d.setDate(1);
        e = new Date(e);
        e = e.setMonth(num);
        e = new Date(e);
        e = e.setMonth(e.getMonth() + 1) - 24 * 60 * 60 * 1000;
        e = new Date(e);
        //alert(e.toLocaleDateString());
        $("#endDate").val(e.format("yyyy-MM-dd"));
    }

    Date.prototype.format = function (fmt) {
        var o = {
            "M+": this.getMonth() + 1,               //月份
            "d+": this.getDate(),                    //
            "h+": this.getHours(),                   //小时
            "m+": this.getMinutes(),                 //
            "s+": this.getSeconds(),                 //
            "q+": Math.floor((this.getMonth() + 3) / 3), //季度
            "S": this.getMilliseconds()             //毫秒
        };
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (var k in o) {
            if (new RegExp("(" + k + ")").test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            }
        }
        return fmt;
    }


    function OnLoadTeam() {
        var baseId = $("#baseId").val();
        $.ajax({
            type: "GET",
            url: "/KpiBaseTeam/GetTeams?baseId=" + baseId,
            dataType: "json",
            success: function (data) {
                console.log(data);
                $("#KpiContents").empty();
                for (var i = 0; i < data.length; i++) {
                    $("#KpiContents").append("

" + i + "].Team.Name\" value=\"" + data[i].Name + "\" hidden=\"hidden\" />" + i + "].TeamId\" value=\"" + data[i].Id + "\" hidden=\"hidden\" /> " + i + "].KpiTeam\" type=\"text\" class=\"form-control\" value=\"0.00\" />

" + i + "].DIYKpi\" type=\"text\" class=\"form-control\" value=\"0.00\" />
"
); } } }); } script> <div class="row"> <div class="col-md-12"> @if (!string.IsNullOrEmpty(fromUrl) && fromUrl != thisUrl) { <a href="@fromUrl" class="btn btn-info"><i class="fa fa-chevron-left">i> 返回a> } else { <a href="@Url.Action("Index", "KpiBaseTeam")" class="btn btn-info"><i class="fa fa-chevron-left">i> 返回a> } div> <div class="col-md-12"> @using (Html.BeginForm("Detail", "KpiBaseTeam", new { fromUrl = fromUrl }, FormMethod.Post, new { enctype = "multipart/form-data" })) { <div class="panel panel-body bk-bg-white"> <div class="form-group"> <h3>设置基地班级业绩指标h3> div> <div class="form-group"> <label for="baseId">基地:label> <select id="baseId" name="Model[0].Team.baseId" class="form-control" onchange="OnLoadTeam()"> <option value="0">请选择基地option> @foreach (var base1 in bases) { <option value="@base1.Id" @(base1.Id == (Model.Count > 0 ? Model[0].Team.BaseId : 0) ? "selected" : "")>@base1.Nameoption> } select> div> <div class="form-group"> <label>日期区间:label> <div class="input-daterange input-group" data-plugin-datepicker> <span class="input-group-addon">span> <input type="text" autocomplete="off" class="form-control" id="startDate" name="Model[0].startDate" value="@(Model.Count>0?Model[0].StartDate.ToString("yyyy-MM-dd"):DateTime.Now.ToString("yyyy-MM-dd"))" /> <span class="input-group-addon">span> <input type="text" autocomplete="off" class="form-control" id="endDate" name="Model[0].endDate" value="@(Model.Count>0?Model[0].EndDate.ToString("yyyy-MM-dd"):DateTime.Now.ToString("yyyy-MM-dd"))" /> div> div> <div class="form-group"> <botton onclick="setDate(0);" class="btn btn-default">1月botton> <botton onclick="setDate(1);" class="btn btn-default">2月botton> <botton onclick="setDate(2);" class="btn btn-default">3月botton> <botton onclick="setDate(3);" class="btn btn-default">4月botton> <botton onclick="setDate(4);" class="btn btn-default">5月botton> <botton onclick="setDate(5);" class="btn btn-default">6月botton> <botton onclick="setDate(6);" class="btn btn-default">7月botton> <botton onclick="setDate(7);" class="btn btn-default">8月botton> <botton onclick="setDate(8);" class="btn btn-default">9月botton> <botton onclick="setDate(9);" class="btn btn-default">10月botton> <botton onclick="setDate(10);" class="btn btn-default">11月botton> <botton onclick="setDate(11);" class="btn btn-default">12月botton> div> <div id="KpiContents"> @if (Model.Count > 0) {


} div> <div class="form-group"> <input type="hidden" value="@Model.Count>0?Model[0].Id:0" name="Id" /> <button id="btnClickCheck" type="submit" name="actionType" value="save" onclick="btnDisabled(this);" class="btn btn-primary">保存button> div> @if (Model.Count > 0 && !string.IsNullOrEmpty(Model[0].OperationRecord)) { <div class="form-group"> <div>操作记录div> <div>@Html.Raw(Server.HtmlDecode(Model[0].OperationRecord.Replace("\r\n", "<br>")))div> div> } div> } div> div>

后端action代码如下:

[HttpPost]
        public ActionResult Detail(List model)
        {
            if (model.Count==1 && model[0].Id != 0)
            {
                this.KpiBaseTeamApplication.Update(model[0].TeamId, model[0].StartDate, model[0].EndDate, model[0].KpiTeam,model[0].DIYKpi, model[0].OperationRecord, model[0].Id);
            }
            else
            {
                this.KpiBaseTeamApplication.AddAllTeam(model);
            }
            if (!string.IsNullOrEmpty(Request.QueryString["fromUrl"]))
            {
                return Redirect(Request.QueryString["fromUrl"]);
            }
            else
            {
                return RedirectToAction("Index", "KpiBaseTeam");
            }
        }

需要用到的类:

public class KpiBaseTeam : AggregateRoot
    {
        /// 
        /// 班级Id
        /// 
        public int TeamId { get; set; }

        /// 
        /// 班级
        /// 
        [ForeignKey("TeamId")]
        public virtual Team Team { get; set; }

        /// 
        /// 开始日期
        /// 
        public DateTime StartDate { get; set; }

        /// 
        /// 结束日期
        /// 
        public DateTime EndDate { get; set; }

        /// 
        /// 班级业绩
        /// 
        [DecimalPrecision(18, 2)]
        public decimal KpiTeam { get; set; }
        /// 
        /// 自主开发业绩
        /// 
        [DecimalPrecision(18, 2)]
        public decimal DIYKpi { get; set; }

        /// 
        /// 操作记录
        /// 
        public string OperationRecord { get; set; }

        /// 
        /// 添加日期
        /// 
        public DateTime CreateDateTime { get; set; }
    }

public class Team : AggregateRoot
    {
        /// 
        /// 基地Id
        /// 
        public int BaseId { get; set; }

        /// 
        /// 基地
        /// 
        [ForeignKey("BaseId"), JsonIgnore]
        public virtual Base Base { get; set; }

        /// 
        /// 班级名称
        /// 
        [MaxLength(100, ErrorMessage = "班级名称最大为{1}个字符"), Required(ErrorMessage = "班级名称不能为空")]
        public string Name { get; set; }

        /// 
        /// 班级员工
        /// 
        [JsonIgnore]
        public virtual List TeamEmployees { get; set; }

        /// 
        /// 是否显示
        /// 
        public bool Show { get; set; }
    }