zoukankan      html  css  js  c++  java
  • Asp.net Mvc Framework 九 (View与Controller交互)

    这一回为避免写第八节时那种情况再次出现,我改用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 系列
  • 相关阅读:
    spring boot 启动类 添加组件
    spirng boot 添加过滤器
    spring cloud spring-hystrix 缓存
    spring cloud spring-hystrix
    spring cloud spirng整合feign
    spring cloud feign
    cxf-client
    spring cloud客户端启用负载均衡
    spring cloud 负载均衡自定义
    VS2013 配置pthread
  • 原文地址:https://www.cnblogs.com/chsword/p/1105535.html
Copyright © 2011-2022 走看看