MVC POST在ACTION上进行多个模型的数据绑定
首先声明,接下来的东西并不符合本人认同的严谨的MVC模式。
用MVC做项目的过程中,越来越多的用到不严谨的MVC编程。
比如,在"cshtml"文件中写:
@Html.Raw(DBUnitity.helperP.getNav("/main/Index",@ViewBag.token))
做页面验证
在比如,在"cshtml"文件中写:
<div class="s-r">@DBUnitity.helperP.getSJCount("sj", "gz")</div> 做数据获取
当然,这些代码不是我写的,是维护以前同事的代码。他的代码跑的好好的,我们也没去做优化,烂(懒)就烂(懒)下去吧。
今天,要讲的,也是一种不严谨的MVC设计及实现的思路。
我们有这样一个页面,比如需要往后台提交数据并进行处理,验证也好,更新也罢,但是提交的数据涉及到了数据库的多张表。
如果按照之前我喜欢的模式,那么肯定是对页面Model进行封装,比如
public class ViewModel
{
public LoginModel loginModel { set; get; }
public PersonModel personModel { set; get; }
}
public class PersonModel
{
public string Age { set; get; }
public string Other { set; get; }
}
public class LoginModel
{
public string Name { set; get; }
public string Psd { set; get; }
}
然后在页面".cshtml"中这样写:
@model MvcBindDataDemo.ViewModel
@using (Html.BeginForm())
{
<p>
账户:@Html.TextBoxFor(p => p.loginModel.Name)</p>
<p>
密码:@Html.PasswordFor(p => p.loginModel.Psd)</p>
<p>
年龄:@Html.TextBoxFor(p => p.personModel.Age)</p>
<p>
其他:@Html.TextBoxFor(p => p.personModel.Other)</p> <input type="submit" value="login" />
}
最后在Controller里面进行接收
[HttpPost]
public ActionResult Login(ViewModel obj)
{
xxx...
return View();
}
//=========================================================================
但是呢,或许我们也可以这样写
不定义"ViewModel.cs"
".cshtml"里面
@using (Html.BeginForm())
{
<p>
账户:@Html.TextBox("login.name", string.Empty)</p>
<p>
密码:@Html.Password("login.psd", string.Empty)</p>
<p>
年龄:@Html.TextBox("person.age", string.Empty)</p>
<p>
其他:@Html.TextBox("person.other", string.Empty)</p> <input type="submit" value="login" />
}
后台Controller:
[HttpPost]
public ActionResult Login( [Bind(Prefix = "login")]LoginModel objLogin,[Bind(Prefix="person")]PersonModel objPerson)
{
xxx...
return View();
}
我们可以将数据直接绑定到“objLogin”与“objPerson”,数据拿到了,想做什么,随便了。
MVC POST在ACTION上进行多个模型的数据绑定的更多相关文章
- 【MVC】关于Action返回结果类型的事儿(上)
一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1. ...
- 尝试asp.net mvc 基于controller action 方式权限控制方案可行性
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...
- 爱上MVC3~在控制器或Action上动态设定模板页(Layout)
回到目录 很多境况下,我们需要设置自己模块的layout,即它的布局页面,在MVC2中叫它模板页面,你可以在return view方法时设置它,当然,这不是一种好方法,因为我不想每个action都去设 ...
- MVC中的文件上传-小结
web开发中,文件的上传是非常基本功能之一. 在asp.net中,通常做法是利用webservice 来接收文件请求,这样做的好处就是全站有了一个统一的文件上传接口,并且根据网站的实际情况,可以将we ...
- 返璞归真 asp.net mvc (3) - Controller/Action
原文:返璞归真 asp.net mvc (3) - Controller/Action [索引页] [源码下载] 返璞归真 asp.net mvc (3) - Controller/Action 作者 ...
- MVC应用程序显示上传的图片
MVC应用程序显示上传的图片 前两篇<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html和<MVC应用程序实现上传文件 ...
- 无法下载apk等格式的文件的解决方案---ASP .NET Core 2.0 MVC 发布到IIS上以后无法下载apk等格式的文件的解决方案
ASP .NET Core MVC 发布到 IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...
- 尝试asp.net mvc 基于controller action 方式权限控制方案可行性(转载)
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...
- Spring MVC 实现文件的上传和下载
前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...
随机推荐
- TabLayout+ViewPager+Fragment制作页卡
本人很懒,直接上代码了. 布局文件: <?xml version="1.0" encoding="utf-8"?><android.suppo ...
- APP级别处理未捕获异常
前言: 项目APP有时候会出现Crash,然后就是弹出系统强制退出的对话框,点击关闭APP. 有的APP进行了处理,会发现,当程序出现异常的时候,会Toast一个提示"程序出现异常,3秒后将 ...
- 使用Fiddler抓取手机请求
使用Fiddler抓取手机请求 Fiddler 手机 今天想尝试在手机上抓包,发现一个好玩的小工具——Fiddler. Fiddler是一个专门的抓包工具,可以模拟请求,修改请求,手机应用调试等.还是 ...
- Linux下的SVN服务器搭建
Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总 ...
- yii2 modal弹窗之ActiveForm ajax表单异步验证
作者:白狼 出处:http://www.manks.top/yii2_modal_activeform_ajax.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位 ...
- C#学习
C#开发轻松入门(慕课网)1.C#简介 1-1 .NET简介 .NET平台可运用多种语言编程,C#配合的最好. 1-2 Visual Studio简介及安装 ... 1-6 Hello World 控 ...
- Ctrl-A全选这点事(C#,WinForm)
所有的文本框,不管单行多行都Ctrl-A全选就好了吧?是啊,很方便.Windows的软件基本都是这样.可为什么我们自己制作的WinForm就默认不是这样呢?谁知道呢,可能是WinForm饱受诟病,要改 ...
- 树莓派 连接wifi与路由器ip绑定
先推荐几个手机软件 在酷安网里应该能找到 1.JuiceSSH 橘子ssh软件 手机连上路由器 就可以控制局域网内的树莓派 2.VNC Viewer 远程桌面软件VNC 也是连接局域网的树莓派 ...
- 5-4 bash脚本编程之三 条件判断及算术运算
1. 反引号是引用执行结果,并非是返回值 如下是错误的,结果是一行行记录,不是返回值 放大为: 练习 2. shell中如何进行算术运算 A=3 B=4 1. let算术运算表达式 2. $[算术运算 ...
- 关于java的递归写法,经典的Fibonacci数的问题
经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...