Asp.net Mvc Framework 九 (View与Controller交互)

简介: 这一回为避免写第八节时那种情况再次出现,我改用Wps写了,如果复制过去格式有问题讲大家见谅 --邹健 本节所有示例都是讲解登录提交表单的过程 为了本课能更好讲解我们先建立一个账号的Model namespace  MvcApplication4.

这一回为避免写第八节时那种情况再次出现,我改用Wps写了,如果复制过去格式有问题讲大家见谅

--邹健

本节所有示例都是讲解登录提交表单的过程

为了本课能更好讲解我们先建立一个账号的Model

namespace  MvcApplication4.Models

{

  public   class   Account

  {

    string  _username;

    public   string  Username {

      get  {  return  _username; }

      set  { _username =  value ; }

    }

    string  _password;

    public   string  Password {

      get  {  return  _password; }

      set  { _password =  value ; }

    }

  }

}

一. 使用我们Asp时代的老朋友

我们建立一个HomeController,之后在其中加一个Index的Action

    public   void  Index() {

      RenderView( "Index" );

    }

是用于显示Index这个View的(Index.aspx):

这是提交表单的

     < form   method ="post"   action =" <% = Url.Action("save")  %> ">

     <% = Html.TextBox( "username" %>

     <% = Html.TextBox( "password" %>

     <% = Html.SubmitButton( "登录" %>

     </ form >

大家可以看到在这个View中form的Action为save

于是我们还需要一个叫save的Action用于接收表单:

    public   void  save (){

      ViewData[ "username" ] = Request.Form[ "username" ];

      ViewData[ "password" ] = Request.Form[ "password" ];

      RenderView( "Result" );

    }

最后我们将结果显示在Result.aspx这个View中:

这是用于接收结果的

    <% = ViewData [ "username" %>

    <% = ViewData [ "password" %>

大家都看到了,我们在Save中使用了我们的老朋友Request.Form来接收了表单

二. 其实Asp.netMVC为我们提供了更好的方法

是什么方法呢?

那就是我觉得不错的一方法 ReadFromRequest 它可以接收Form和QueryString

看以下save这个Action的代码

    public   void  save (){

      ViewData[ "username" ] =  this .ReadFromRequest( "username" );

      ViewData[ "password" ] =  this .ReadFromRequest( "password" );

        RenderView( "Result" );

    }

可以实现上面一样的功能

三. 我们可以用"参数"

前面我们提到了参数来接收的功能

    public   void  save ( string  username, string  password){

      ViewData[ "username" ] = username;

      ViewData[ "password" ] = password;

        RenderView( "Result" );

    }

一切OK

四. 到激动人心的地方了我们使用绑定功能

在Monorail中我们有这样的功能

public void save([DataBind("account")] Account account) ;可以实现将一个对象与表单绑定

当然Asp.net MVC中也应该有

我们将View改成:

 这是提交表单的

     < form   method ="post"   action =" <% = Url.Action("save")  %> ">

     <% = Html.TextBox( " Account .username" %>

     <% = Html.TextBox( " Account .password" ) %>

     <% = Html.SubmitButton( "登录" %>

     </ form >

而Save这个Action中写如下代码:

    public   void  save() {

      Account  user =  new   Account ();

      BindingHelperExtensions .UpdateFrom(user, Request.Form,  " Account " );

      ViewData[ "username" ] = user.Username;

      ViewData[ "password" ] = user.Password;

      RenderView( "Result" );

    }

呵呵,仍然可以输

BindingHelperExtensions .UpdateFrom 让我们将从表单中以对象方式传递着数据

当然这个对象如果绑定的为Dlinq的对象就更加方便应用了

也可以通过这种方式绑定

View:

 这是提交表单的

     < form   method ="post"   action =" <% = Url.Action("save")  %> ">

     <% = Html.TextBox( "username" ) %>

     <% = Html.TextBox( "password" ) %>

     <% = Html.SubmitButton( "登录" %>

     </ form >

Action:

public   void  save() {

      Account  user =  new   Account ();

      BindingHelperExtensions .UpdateFrom(user, Request.Form);

      ViewData[ "username" ] = user.Username;

      ViewData[ "password" ] = user.Password;

      RenderView( "Result" );

    }

也可以实现

这里用了 BindingHelperExtensions .UpdateFrom(user, Request.Form); 来实现绑定

这个用于表单中只有一个对象的情况,前一个则可适用于多个对象在同一表彰中的情况


本节示例 MVC9.rar

Asp.net Mvc Framework 系列
目录
相关文章
|
2月前
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
48 1
|
4月前
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
49 5
|
2月前
|
开发框架 缓存 监控
NET Framework 到 .NET 5/6 的迁移是重大的升级
本文详细介绍了从 .NET Framework 4.8 迁移到 .NET 5/6 的过程,通过具体案例分析了迁移策略与最佳实践,包括技术栈评估、代码迁移、依赖项更新及数据库访问层的调整,强调了分阶段迁移、保持代码可维护性及性能监控的重要性。
52 3
|
2月前
|
机器学习/深度学习 编解码 算法
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。
71 0
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
43 7
|
4月前
|
开发框架 缓存 前端开发
实战.NET Framework 迁移到 .NET 5/6
从.NET Framework 迁移到.NET 5/6 是一次重要的技术革新,涵盖开发环境与应用架构的全面升级。本文通过具体案例详细解析迁移流程,包括评估现有应用、利用.NET Portability Analyzer 工具识别可移植代码、创建新项目、逐步迁移代码及处理依赖项更新等关键步骤。特别关注命名空间调整、JSON 序列化工具更换及数据库访问层重构等内容,旨在帮助开发者掌握最佳实践,确保迁移过程平稳高效,同时提升应用性能与可维护性。
134 2
|
4月前
|
开发框架 JSON 监控
实战指南:从 .NET Framework 迁移到 .NET 5/6 的策略与最佳实践
【8月更文挑战第28天】从 .NET Framework 迁移到 .NET 5/6 是一次重要的技术升级,涉及开发环境与应用架构的改进。本文通过具体案例分析,介绍迁移策略与最佳实践,帮助开发者顺利完成转变。
83 1
|
4月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
63 0