【发布时间】:2018-10-07 00:48:03
【问题描述】:
所以我尝试制作一个 asp.net core 2 (visual studio 2017)。试图为主银行制作一个简单的视图,新建,编辑,删除。我在视图上取得了成功并创建了新的,但现在我被困在了编辑部分。因此,当用户单击编辑时,我打开新窗口并显示详细信息供他们编辑,然后当他们单击保存按钮时,我保存了值(例如在创建新窗口时)。就是这么简单。但由于某种原因,用于编辑的 modelstate.isvalid 始终为 false,当我尝试调试时,我发现所有项目都返回 null(它们都显示在视图上),除了主键。请帮助我做错了什么:
班级:
公共课 MsBank { [必需(错误消息 =“必需。”)] [RegularExpression(@"\b[A-Z0-9]{1,}\b", ErrorMessage = "必须大写")] 公共字符串银行代码 { 获取;放; } [必需(错误消息 =“必需。”)] 公共字符串银行名称 { 获取;放; } 公共字符串 BankBranch { 获取;放; } 私人 SqlConnection con; 私人无效连接() { PrjCommon dbhandle = new PrjCommon(); con = new SqlConnection(dbhandle.GetSetting()); } public bool AddBank(List smodel) { 联系(); SqlCommand cmd = new SqlCommand("SaveMsBank", con); cmd.CommandType = CommandType.StoredProcedure; foreach(smodel 中的变量项){ cmd.Parameters.AddWithValue("@BankCode", item.BankCode); cmd.Parameters.AddWithValue("@BankName", item.BankName); cmd.Parameters.AddWithValue("@BankBranch", item.BankBranch); cmd.Parameters.AddWithValue("@LastUpdatedBy", "Me"); cmd.Parameters.AddWithValue("@LastUpdatedFromModule", "NET"); } con.Open(); int i = cmd.ExecuteNonQuery(); con.Close(); 如果 (i >= 1) 返回真; 别的 返回假; } } }观点:
@model 列表[MsBank] @{ ViewData["Title"] = "编辑"; } @using (Html.BeginForm()) { @Html.AntiForgeryToken() @foreach(模型中的变量项){ 代码 : @Html.EditorFor(model => item.BankCode, new { htmlAttributes = new { @class= "form-control" } }) @Html.ValidationMessageFor(model => item.BankCode, "", new { @class= "text-danger" }) 姓名 : @Html.EditorFor(model => item.BankName, new { htmlAttributes = new { @class= "form-control" } }) @Html.ValidationMessageFor(model => item.BankName, "", new { @class= "text-danger" }) 分支 : @Html.EditorFor(model => item.BankBranch, new { htmlAttributes = new { @class= "form-control" } }) @Html.ValidationMessageFor(model => item.BankBranch, "", new { @class= "text-danger" }) } } @ViewBag.Message @Html.ActionLink("返回列表", "索引") @section 脚本 { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} }和控制器:
公共 ActionResult 编辑(字符串 BankCode) { MsBank ms = 新的 MsBank(); 模型状态.清除(); 返回视图(ms.GetData(银行代码)); } [HttpPost] [验证AntiForgeryToken] public ActionResult Edit(string BankCode,List smodel) { 尝试 { 如果(模型状态。IsValid) { 如果(smodel.Count > 0) { MsBank ms = 新的 MsBank(); if (ms.AddBank(smodel)) { ViewBag.Message = "银行编辑成功"; 模型状态.清除(); } return RedirectToAction("索引"); } else { ViewBag.Message = "空记录"; } } 返回视图(模型); } 捕获(异常 e) { ViewBag.Message = e.ToString(); 返回视图(模型); } }所以,为了更清楚起见,上面的 modelstate.isvalid 返回 false(调试时我发现),因为 bankname 是无效的,因为它是 null,所以 bankbranch 也是 null
【问题讨论】:
标签: asp.net