MVC 各种传值方式_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > MVC 各种传值方式

MVC 各种传值方式

 2011/7/11 11:07:46  fhuan123  http://fhuan123.iteye.com  我要评论(0)
  • 摘要:【转自】:http://hi.baidu.com/honfei/blog/item/a7cdb7dd47de86d28d1029e5.html示例一:ViewData传值.HomeController.csCode:publicActionResultIndex(){ViewData["Title"]="HomePage";ViewData["Message"]="WelcometoASP.NETMVC!";returnView();}Views/Home/Index.aspxCode:<
  • 标签:MVC 方式

【转自】:http://hi.baidu.com/honfei/blog/item/a7cdb7dd47de86d28d1029e5.html

示例一:
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>
<%} %>
结果:
示例四: 表单的值回传给服务器. 新建一个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(); %>
结果:在form表单的内容将显示到当前页面
发表评论
用户名: 匿名