MVC 传值

MVC 各个传值形式 ViewData传值. HomeController.cs Co

de:

public ActionResult Index()

     ViewData[“Title” ] = “Home Page” ;
     ViewData[“Message” ] = “Welcome to ASP.NET MVC!” ;
     return View();
}

Views/Home/Index.aspx Code:

<asp:Content
ID=”indexContent” ContentPlaceHolderID=”MainContent”runat=”server” >
    <p>
    <%= Html.Encode(ViewData[“Message” ]) %>
    </p>
</asp:Content>

结果:在页面上出示Welcome to ASP.NET MVC! 

示例二:
带参数字传送值.
URL Routing规则:

routes.MapRoute(
    “Default” ,                                              // Route
name 
    “{controller}/{action}/{param}” ,                           // URL
with parameters 
    new { controller = “Home” , action = “Index” , param = “” } //
Parameter defaults 
);

HomeController.cs Code:

public ActionResult Index(string param,int? paraInt,string paraStr)

    ViewData[“Title” ] = “Home Page” ;
    ViewData[“Message” ] = “Welcome to ASP.NET MVC!” ;
    ViewData[“Param” ] = param;
    ViewData[“ParaInt” ] = paraInt;
    ViewData[“ParaStr” ] = paraStr;
    return View();
}

Views/Home/Index.aspx Code:

<asp:Content
ID=”indexContent” ContentPlaceHolderID=”MainContent”runat=”server” >
    <p>
    <%= Html.Encode(ViewData[“Message” ]) %>
    </p>
    <p>
    <%= Html.Encode(ViewData[“Param” ]) %>
    </p>
    <p>
    <%= Html.Encode(ViewData[“ParaInt” ] ??
(object )”(null)” )%>
    </p>
    <p>
    <%= Html.Encode(ViewData[“ParaStr” ] ??
(object )”(null)” )%>
    </p>
</asp:Content>

结果:
访问:/home/index/hello?paraint=520&parastr=world
显示: hello 520 world
访问:/home/index/hello
显示:hello (null) (null)

示例三:
强类型传值:

新建三个xml文件:

 

<?xml version=”1.0″ encoding=”utf-8″ ?> 
<root>
<item name=”Sea” >
    <animal>Fish</animal>
    <animal>Shrimp</animal>
    <animal>Crab</animal>
</item>
<item name=”Sky” >
    <animal>Bird</animal>
    <animal>Man</animal>
</item>
</root>

新建多个类读取xml数据.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using System.Web.Hosting;

namespace ViewData.Models

    public class Space 
    { 
        public string Name { get ; set ; } 
        public string [] Animal { get ; set ; } 
        private static Space space;
        public IEnumerable<Space> GetSpace()
        { 
            XDocument xml =
XDocument.Load(HostingEnvironment.MapPath(“~/App_Data/Space.xml”));
            IEnumerable<Space> results = from
p in xml.Root.Elements(“item”)
                                         select new Space
                                         { 
                                             Name =
p.Attribute(“name” ).Value,
                                             Animal =
p.Elements(“animal” ).Select(r => r.Value).ToArray()
                                         } ;
            return results;
        } 
        public static Space Instance
        { 
            get 
            { 
                if (space == null )
                { 
                    space = new Space();
                } 
                return space;
            } 
        } 
    } 
}

在HomeController内添加Action:

 

public ActionResult About()

    ViewData[“Title” ] = “About Page” ;

    return View(Space.Instance.GetSpace());
}

在About.aspx.cs后天修改如下.

 

public partial class About : ViewPage<IEnumerable<Space>>

About.aspx调用数据:

 

<%foreach (var p in ViewData.Model){ %>
<ul>
<li><%=p.Name %>
<ul>
<%foreach (string r in p.Animal){ %>
<li><%=r%></li>
<%} %>
</ul>
</li>
</ul>
<%} %>

结果:

 

起名 1

 

示例四:

表单的值回传给服务器.

新建一个UserM类:UserM.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ViewData.Models

    public class UserM 
    { 
        public string Name { get ; set ; } 
        public string Password { get ; set ; } 
        private static UserM user;
        
        public static UserM Instance 
        { 
            get 
            { 
                if (user == null )
                { 
                    user = new UserM();
                } 
                return user;
            } 
        } 
    } 
}

HomeControllers添加Action

 

[AcceptVerbs(“GET”)] //GET调用 
public ActionResult Form()

    return View(UserM.Instance);

[ActionName(“Form”), AcceptVerbs(“POST”)]//POST调用 
public ActionResult SaveForm()

    UpdateModel(UserM.Instance, new [] { “Name” , “Password” } );
    return View(UserM.Instance);
}

Form.aspx.cs后台添坚实项目引用

 

public partial class Form : ViewPage<UserM>

Form.aspx

<p>
<%=Html.Encode(ViewData.Model.Name) %><br />
<%=Html.Encode(ViewData.Model.Password) %>
</p>
    <%Html.BeginForm();%>
    Name:<%=Html.TextBox(“Name” )%>
    Password:<%=Html.Password(“Password” ) %>
    <input type=”submit” value =”Submit” />
    <%Html.EndForm(); %>

1: ViewData传值方式
ViewData的生命周期和View一样, 只对当下View有效.
   ViewData[“zd”] = dfdfd
贰:TempData传值方式
   可以跨Action传递
   TempData的数量至八只好经过三次Controller传递,
并且各个成分至多只可以被访问1回,
  
   例如叁个用法为,抛出二个尤其。跳转到error页面
public ActionResult Index3()
{
      TempData[“tempIndex”] = “出错了!”;
      Response.Redirect(“/home/error”);
      return View();
}
3:QueryString传值
一)也足以应用new{}来为form的action扩展querystring
2)在controler里使用Request.QueryString[“word”]获取值
例如:
<li>
                <%= Html.ActionLink(“Browse”, “Browse”, “User”, new {
word = “word1” }})%></li>
               
Controler页面:
public ActionResult Browse(string word)
        {
            ViewData[“word”] = Request.QueryString[“word”];
            ViewData[“word2”] = word;
            return View();
        }
4:Post传值
譬如:直接选取mehod=post
<%@ Page Language=”C#” Inherits=”System.Web.Mvc.ViewPage” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
    <title></title>
</head>
<body>
    <div>
     <form action=”/User/AddRelease” method=”post”>
      <ul>
         <li>用户名1:<input type=”text” value=””
name=”UserName2″/></li>
         <li>密码1: :<input type=”text” value=””
name=”Password2″/></li>
      </ul>
      <input type=”submit” value=”添加” />
      </form>
</body>
</html>
比如说贰:也足以接纳HtmlHelper.post方法
<%@ Page Language=”C#” Inherits=”System.Web.Mvc.ViewPage” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
    <title></title>
</head>
<body>
    <div>
     <% Html.BeginForm(“AddRelease”, “User”, FormMethod.Post);
%>
      <ul>   
         <li>用户名: <%= Html.TextBox(“UserName”)
%></li>
         <li>密码: <%= Html.TextBox(“Password”)
%></li>
      </ul>
       <% Html.EndForm(); %>
      <input type=”submit” value=”添加” />
</body>
</html>
Html.BeginForm
Html.EndForm
Html.TextBox

壹 工程组织
八个程序集
Microsoft.Web.Mvc –壹些得以动用的,不分明的次序包
System.Web.Mvc  –主程序库
上边七个列入三.5的Net框架了
System.Web.Abstractions
–Request,Respose等5大目的、缓存,那个用来Asp.net
Webfrom下使用的,那个利用装饰者方式来使的千古的应用的类,和mvc下行使的类像包容。
System.Web.Routing —
同是3.5的引用
System.Web.Extensions –Ajax控件
文件
App_Data 数据库
Content  样式,图片,Js等
Controllers 调整器,能够改换名字,暗许值
Models 模型
Views  视图
二 基本工作流程
http://localhost:23797/home/index
home 是调整器
index 是Action
HomeController –> Index()
艺术 return View();
这一个方法会私下认可访问View文件夹下的Home->Index.aspx文件
主意 return View(“about”); 访问大家内定的页面
变动了代码,要再度生成一下,才会起功用
三 MVC架构
页面请求–>Controller->Models(OSportageM)->数据库
              |
    页面 <–Views
四 ViewData传值,本页View传递
   Controller –> Views 之间通过 ViewData 来传值。
   Controller中写 ViewData[“zd”] = “欢迎你!”;
   View中 调用 <%= ViewData[“zd”] %>
  
   此外也能够是扑朔迷离类型
   List<string> sl = new List<string>();
   sl.Add(“重典”);
   sl.Add(“冰动力”);
   ViewData[“zd”] = sl;
   View中调用
   <% foreach(string str in ViewData[“zd”] as List<string>){
%>
   <%= str %>
   <% } %>
   对aspx页面,举办改造能够不编写翻译生成。
5 此外1种传值格局TempData,能够跨页面Action传递1次
   TempData[“ddd”] = “哈哈”;
   Response.Redirect(“/home/about”);
   页面about中
   <%= TempData[“ddd”] %>
起名,   只保留3回值。
  
  
用途:比如程序运营到早晚地方,报错误抛出十三分了,到三个要命处理页面,把错误消息传过去,专门处理一下。
陆  ViewData的其余传递形式,类的传递
    定义1个类
    public class User
    {
public string Name {get;set;}
public int ID {get;set;}
    }
    在Controller中开始展览实例化
    User user = new User();
    user.ID = 1;
    user.Name = “安安”;
   
    ViewData[“user”] = user;
   
    在View中
    <%= (ViewData[“user”] as User).Name %>
    还有壹更便宜的格局:
    把对象放在 return View(user); 传递出去
    页面View
    首先修改一下页面class 承接
    比如:
    public partial class Index : ViewPage
    –>
    public partial class Index : ViewPage<User>
    然后再页面中
    <%= ViewData.Model.Name %>
    
    只可以传递二个引用类型。
    将三个对象,用泛型类型传递到页面中。
7  新建页面
    一. 新建四个Controller
       默认的Action是Index
       public ActionResult Index()
       {
           return View();
       }
     二. 新建三个View
        跟刚刚的Controller同名
八  重定向,Redirect
    Response.Redirect(“/user/edit”);
    //WebFrom版平时跳转照旧协助的
    新的return的MVC方式的跳转
    return Redirect(“/user/edit”);//新的跳转
    return RedirectToAction(“edit”);
    //同 调整器差别Action 跳转
    return RedirectToAction(“index”,”edit”);
    //不一致 调节器跳转
九  Url Routing路由
    home/index
    能定点到–>home调节器 –>index Action
    在golab.cs中
八  filter 过滤器
    编码解码 数据压缩服务设置协议 等等 都能够在此地做
    在Action产生在此之前产生现在 奉行
    在View展现以前体现之后 推行
   
    新建一个类,起名加参数验证filter(ParamFiter)
    filter要传承过滤器的基类 System.Web.Mvc.ActionFilterAttribute
   
     重写方法
     protected override void OnActionExecuted(ActionExecutiongContext
filterContext)
{
   //Action运维之后
}
     protected override void OnActionExecuting(ActionExecutingContext
filterContext)
{
   //Action运维以前
   if(filterContext.HttpContext.Request.QueryString[“k”] != “goo”)
    {
throw new Exception(“那有多少个荒唐”);
    }
}
     protected override void OnResultExecuted(ResultExecutedContext
filterContext)
{
     //在View展现之后
}
     protected override void OnResultExecuting(ResultExecutingContext
filterContext)
{
      //在View展现在此之前
}
filter过滤器怎么用
在Controller中的类方面加上
[ParamFilter]
public class HomeControler : Controler
全总Controller上都会选取那些过滤器
也能够献身Controller中的某些Action上
[ParamFilter]
public ActionResult Index()
http://localhsot:23797/?k=go 就能够访问了
九 Helper初体验
   HtmlHelper 用来原有的服务器控件,突显数据的时候要借用Helper
   UrlHelper 由于url路由的存在,Url具有不醒目
   /home/index
   /home/index.ashx
   借使老是写死的话,将要完全替换,用urlhelper就足以制止。
   
   其它 Helper
只幸亏View页面上用,不要再调节器上采纳,这一个是显明不是纯属。
   HtmlHelper只要在View页面用Html调用就足以了。
   UrlHelper只要在View页面用url
   超链接
   <%= Html.ActionLink(“首页”,”index”,”Home”) %>
   HtmlHelper能够显示全部的表单成分,包括form都以用它来显示
   <%= Html.TextBox(“category”) %>
   HtmlHelper还有两个新鲜的法子,输出编码效用
   <%= Html.Encode() %>
  
   UrlHelper只是用来展现UBMWX叁L的
   <%= Url.Action(“index”,”home”) %> 显示
   <%= Url.Content(“//dd”) %> 把网址路线转化为U翼虎L展现出来

10  QueryString传值方式
    url?key1=value&key2=value2
    获取的时候正是用
    Request.QueryString[“key1”]
   
    在Controller中,
    ViewDate[“V”] = Request.QueryString[“word”];
    在View中
    <%= ViewData[“w”]%>
    在传值的调用页面中
    <%= Html.ActionLink(“编辑页”,”edit”,”user”,new {word =
“zhongdian”},new {@class=”x”}) %>
    最后3个本性是扩展的a标签的,那里给它五个体制。
    由于class是首要字,能够把Class(c大写)幸免,也得以加@前导符转义。
    生成的Html页面代码
    <a href=”/user/edit?word=zhongdian”
class=”x”>编辑页</a>
    还有1个更简便的法门:
    在Controllers中改写
    public ActionResult Edit(string word)
    //作为Action的参数
十壹 表单提交Post
     <form> 因为提交的ULX570L也有不明显因素,所以用Helper生成。
     创建form
     <% using(Html.Form(“user”,”edit”,FormMethod.Post)) { %>
      username:<%= Html.TextBox(“Username”) %>
      <br/>
      password:<%= Html.Password(“Password”) %>
      <br/>
      <%= Html.SubmitButton(“”,”提交”) %>
      <% } %>
      在Controller中承受Form表单的要素的值
      string un = Request.Form[“Username”];
      string ps = Request.Form[“Username”];
      ViewData[“w”] = un + ps;
      在页面View中
      <%= ViewData[“w”] %>
10二 相比较好的传值情势,UpdateModel
    
UpdateModel其实是Controller集下的贰个办法,这几个措施是将Post、get提交过来的照应的值存储到一个指标。
     UpdateModel();
     定义类
     public class User
     {
       public string Name {get;set;}
       public string Password{get;set;}
     }
     在Controller中艺术中怎么着写
     User u = new User(); //Model
     UpdateModel(u,Request.Form.AllKeys);//get也可以
     string un = u.Name;
     string ps = u.Password;
     ViewData[“w”] = un + ps;
     在页面View中
     <%= ViewData[“w”] %>
十三 单选复选 更新
      单选框
     <%= Html.RadioButton(“n1″,”man”,false)%>性别
     单选框列表
     <%= foreash(string s in
Html.RadioButtonList(“ah”,new[]{“音乐”,”书法”})
)
{%>
<%= s %>
<%}%>
     复选框
     <%= Html.CheckBox(“c1”)%> 复选
     在Controller中什么接受传过来的值
     ViewData[“show”] = Request.Form[“n1”]; //修改n一 为 ah
就能够测试呈现列表
     在页面View中
     <%= ViewData[“show”] %>
     
在复选框的值有多少个,而且name又是千篇一律的话,能够用三个字符串数据接收它的值。
   
10肆 表单验证
<form action=”” method=”post”>
<%= Html.ValidatiesMessage(“u”)%>
<fieldset>
<legend>提交用户</legend>
<p><label>用户名</label>
<%= Html.TextBox(“u.UserName”)%>
</p>
<p><label>密码</label>
<%= Html.TextBox(“u.Password”)%>
</p>
<input type=”submit”/>
</fieldset>
</form>
后面Controller的代码
HttpVerbs.Post
public ActionResult Index(u as User)
{
if(u.UserName != “重典”)
     ViewData.ModelState.AddModelError(“u”,”用户名错误”);
        if(u.Password != “123456”)
            ViewData.ModelState.AddModelError(“u”,”密码错”);
        return View();
}

 

起名 2
四,专门目录参与连串path变量
“桌面→ 作者的处理器→右键菜单→属性→高端→环境变量→用户变量→path”。
具体做法:选中path后,点击“编辑”,在弹出的对话框中,“变量值”输入框中,定位到文字最前面(可按End键),先增添三个半角分号(以代表与日前的始末分别),再写入(分号后边不用空格)d:\short\。

OK,那样以往我们就可以在Windows+奥迪Q3运转中输入快捷格局的名字来运转相应的先后了。

cmd.exe——–CMD命令提醒符  lusrmgr.msc—-本机用户和组
 eventvwr——-事件查看器  gpedit.msc—–组战术 explorer——-展开能源管理器

winver———检查Windows版本  wupdmgr——–windows更新程序
 dcomcnfg——-展开系统组件服务  nslookup——-互联网管理的工具向导

perfmon.msc—-Computer品质监测程序  taskmgr—–职分管理器
 mspaint——–画图板  mmc————展开调整台
 mstsc———-远程桌面连接  

Widows + 猎豹CS6基本上成为很常用的情势,那么通过Windows +
Odyssey大家得以在运作中做什么样动作呢。

netstat -an—-(TC)命令检查接口  certmgr.msc—-证书管理实用程序
 fsmgmt.msc—–共享文件夹管理器  utilman——–帮助理工科程师具管理器  

logoff———注销命令  tsshutdn——-60秒倒计时关机命令
 compmgmt.msc—Computer管理 conf———–运行netmeeting
 diskmgmt.msc—磁盘管理实用程序

尖端应用,自定义命令:

calc———–运营计算器  devmgmt.msc—设备管理器
 Msconfig.exe—系统布署实用程序  winmsd———系统音信 perfmon.msc—-Computer性能监测程序

 

起名 3

一,找到对象,为它白手起家迅速格局。  
二,为火速格局改名,将转移的快捷格局修改为叁个好记的名字,比如IEExplorer
可以直接起名字为IE。 
3,快捷情势移到尤其目录,比如把这几个火速情势都活动到目录d:\shortCut(那么些渠道能够友善定义,随意修改,只要与肆步骤中的环境变量Path一致就能够),那样方便管理。有个别快速方式当时常用,过了一段时间就毫无了,可以不定期查看一下,及时清理无用音讯。

inetmgr———–进入IIS  Powershell——–进入Powershell调控台
 cleanmgr——-垃圾整理  dfrg.msc——-磁盘碎片整理程序
 osk————展开显示器键盘

上边从最焦点的系统命令提及

notepad——–张开记事本    services.msc—本地服务设置
 regedit——-注册表编辑器  Msconfig.exe—系统布局实用程序
 mem.exe——–突显内部存款和储蓄器使用状态

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图