首先声明,接下来的东西并不符合本人认同的严谨的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上进行多个模型的数据绑定的更多相关文章

  1. 【MVC】关于Action返回结果类型的事儿(上)

    一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1. ...

  2. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  3. 爱上MVC3~在控制器或Action上动态设定模板页(Layout)

    回到目录 很多境况下,我们需要设置自己模块的layout,即它的布局页面,在MVC2中叫它模板页面,你可以在return view方法时设置它,当然,这不是一种好方法,因为我不想每个action都去设 ...

  4. MVC中的文件上传-小结

    web开发中,文件的上传是非常基本功能之一. 在asp.net中,通常做法是利用webservice 来接收文件请求,这样做的好处就是全站有了一个统一的文件上传接口,并且根据网站的实际情况,可以将we ...

  5. 返璞归真 asp.net mvc (3) - Controller/Action

    原文:返璞归真 asp.net mvc (3) - Controller/Action [索引页] [源码下载] 返璞归真 asp.net mvc (3) - Controller/Action 作者 ...

  6. MVC应用程序显示上传的图片

    MVC应用程序显示上传的图片 前两篇<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html和<MVC应用程序实现上传文件 ...

  7. 无法下载apk等格式的文件的解决方案---ASP .NET Core 2.0 MVC 发布到IIS上以后无法下载apk等格式的文件的解决方案

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  8. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性(转载)

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  9. Spring MVC 实现文件的上传和下载

    前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...

随机推荐

  1. CentOS7 修改防火墙,增加外网可以访问的端口号

    CentOS7 修改防火墙,增加外网可以访问的端口号: vim /etc/sysconfig/iptables 增加一条 -A INPUT -p tcp -m state --state NEW -m ...

  2. AngularJS 系列 01 - HelloWorld和数据绑定

    目录导读: AngularJS 系列 学习笔记 目录篇 前言: 好记性不如烂键盘,随笔就是随手笔记,希望以后有用. 本篇目录: 1. Hello World 2. AngularJS中的数据绑定 3. ...

  3. Oracle学习笔记十一 游标

    游标的简介 游标的概念 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作 ...

  4. freeradius整合AD域作anyconncet认证服务器

    一.服务器要求 Radius服务器:centos6.6.hostname.selinux  disabled.stop iptables AD域服务器:Windows Server 2008 R2 E ...

  5. ubuntu kylin 14.04安装搜狗输入法

    1.卸载原有的输入法,fcitx或ibus.如卸载fcitx: sudo apt-get remove fcitx*(如不需保留配置文件用purge) sudo apt-get autoremove( ...

  6. MySQL安装与基本配置

    一.简介 SQL语言 DDL:表.视图.索引.触发器操作等.CREATE/ALTER/DROP语句 DML:数据操作.SELECT/INSERT/UPDATE/DELETE DCL:权限设置.GRAN ...

  7. Linux 文件系统分区基础

    文件系统就是管理设备,组织文件的一些结构和算法. /boot分区,它包含了操作系统的内核和在启动系统过程中所要用到的文件, 建这个分 区是有必要的,因为目前大多数的PC机要受到BIOS的限制,况且如果 ...

  8. monkey之monkey命令详解

    四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...

  9. 使用gulp-uncss清理多余无用css

    cnpm 也可以使用npm cnpm install gulp-uncss --save-dev gulpfile.js var gulp = require('gulp'), uncss = req ...

  10. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...