Asp.Net MVC4通过id更新表单内容的思路详解
发布时间 - 2026-01-11 02:23:03 点击率:次用户需求是:一个表单一旦创建完,其中大部分的字段便不可再编辑。只能编辑其中部分字段。

而不可编辑是通过对input输入框设置disabled属性实现的,那么这时候直接向数据库中submit表单中的内容就会报错,因为有些不能为null的字段由于disabled属性根本无法在前端被获取而后更新至数据库。
有下面两种思路:
1.通过创建隐藏表单,为每一个disabled控件分别创建一个隐藏控件,但是这样的问题是工作量太大(如果表单有一千个属性,你懂的)
2.通过获取该表单在数据库中的id,把该id和可以编辑的字段传递到后台。首先通过id将对象及其属性数据从数据库中搜索出来,然后将可以编辑的字段赋值给该对象。处理完毕后,再将该对象的数据更新至数据库。
综上所述,用第二种思路能显得更加睿智。
下面是具体的操作步骤:(具体步骤就不用细看了,这是我从项目中抽出来的,只适合我自己回顾)
1.在OutsourcingModule.cs中创建路由,以此创建一个访问路径:
routes.MapRoute(
"OutSourcingWorkSheet",//路由名
"outsourcing/saveWorkSheet",//url路径
new {controller = "Outsourcing", action = "SaveWorkSheet"}//映射的控制器以及对应的Action方法名
);
2.
/// <summary>
/// 保存工作票
/// ModelBinder会将前端传递过来的id在数据库中搜索出字段并且转换为outsourcing对象
/// 此时的outsourcing对象中的workSheets属性不是前端传递过来的值,而是数据库中的
///
/// 方法中有两个参数,outsourcing上面已经解释,workSheets是前端传递过来的第二个参数
/// </summary>
/// <param name="outsourcing"></param>
/// <param name="workSheets"></param>
/// <returns></returns>
[HttpPost]
[ActionName("SaveWorkSheet")]
[AccessRestriction("SaveWorkSheet")]
public JsonResult SaveWorkSheet(Outsourcing outsourcing,string workSheets)
{
if (outsourcing!=null)
{
outsourcing.WorkSheets = workSheets;
_outsourcingService.Save(outsourcing);
return Json(new ABResponse(HttpStatusCode.OK));
}
return Json(new ABResponse(HttpStatusCode.BadRequest));
}//AB为内部项目
3.前端js脚本代码
$('#btn_saveWorkSheet').on('click', function () {
if ($("input[name=workSheets]").val() == "") {
bootbox.alert("不能为空");
} else {
$.ajax({
type: "post",
url: "/outsourcing/saveWorkSheet",
data: {
ID: $("#outsourcing_id").val(),
WorkSheets: $("input[name=workSheets]").val()
},
dataType: "json",
success: function (data) {
if (data.Code == 200) {
bootbox.alert("修改成功,即将刷新");
setTimeout(function () {
location.reload();
}, 1000);
} else {
bootbox.alert("提交失败,请稍后再试");
}
}
});
}
});
其实思路很简单,但是我特么做了大半天- -;其中还遇到了一个大坑:
在第二段代码的参数列表中,我一开始把string workSheets写成了WorkSheets。这时文字下出现了蓝色的波浪线,Alt+Enter后系统提示Rename to workSheets,我便直接回车确定了。然后,WorkSheets字段便再也无法保存,也不能从数据库中读取。在同事帮忙找了N久之后发现,原来是当时大写改小写的过程中同时将dbml文件中的字段也改成了小写导致了无法和数据库匹配。
做这个功能的时候顺便学到的一点知识:
如果一个input的id为apple,那么可以这么获取,这是我本来就知道的:
var apple = $("#apple").val();
如果一个input的name为apple,那么可以这么获取,这是我刚知道的:
var apple = $("input[name=apple]").val();
还有一个刚知道的,如果从很多input中去除某个name:
$("#fruit").find("input:not(input[name=apple]),textarea,select").attr("disabled", true);
//从id为fruit的父元素里面寻找所有的input、textarea和select控件以及其值,但是除去name为apple的控件
另外总结下ajax的方式,很久不用都快忘了:
$.ajax({
type:"post",//可以选择post或者method
url:"",//url接口
data:{
//参数列表
},
success:function(data){
//如果访问url成功,data就是该url接口自动返回的数据
}
})
总结
以上所述是小编给大家介绍的Asp.Net MVC4通过id更新表单内容的思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# asp.net
# mvc4
# id更新表单内容
# ASP.NET MVC4入门教程(三):添加一个视图
# ASP.NET MVC4入门教程(二):添加一个控制器
# ASP.NET MVC4入门教程(一):入门介绍
# ASP.NET MVC4 HtmlHelper扩展类
# 实现分页功能
# 使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
# 基于Asp.Net MVC4 Bundle捆绑压缩技术的介绍
# 表单
# 数据库中
# 这是我
# 创建一个
# 小编
# 这是
# 就会
# 在此
# 我一
# 两种
# 中有
# 很久
# 太大
# 大半天
# 第二个
# 给大家
# 很简单
# 还有一个
# 问题是
# 找了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
香港服务器部署网站为何提示未备案?
EditPlus中的正则表达式实战(6)
如何用PHP快速搭建CMS系统?
深圳网站制作的公司有哪些,dido官方网站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
教你用AI润色文章,让你的文字表达更专业
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何获取免费开源的自助建站系统源码?
如何为不同团队 ID 动态生成多个独立按钮
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
制作电商网页,电商供应链怎么做?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Swift中switch语句区间和元组模式匹配
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
JS去除重复并统计数量的实现方法
微信小程序 canvas开发实例及注意事项
如何在Windows服务器上快速搭建网站?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
香港服务器租用每月最低只需15元?
如何确认建站备案号应放置的具体位置?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
JavaScript如何实现倒计时_时间函数如何精确控制
EditPlus中的正则表达式 实战(2)
南京网站制作费用,南京远驱官方网站?
PythonWeb开发入门教程_Flask快速构建Web应用
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何快速搭建二级域名独立网站?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
如何在企业微信快速生成手机电脑官网?
制作企业网站建设方案,怎样建设一个公司网站?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
如何快速生成可下载的建站源码工具?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
利用JavaScript实现拖拽改变元素大小

