MVC-各种传值方式
示例一:
ViewData传值.
HomeController.cs Code:
结果:在页面上显示Welcome to ASP.NET MVC!
示例二:
带参数传值.
URL Routing规则:
访问:/home/index/hello?paraint=520¶str=world
显示: hello 520 world
访问:/home/index/hello
显示:hello (null) (null)
示例三:
强类型传值:
ViewData传值.
HomeController.cs Code:
public ActionResult Index()
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
Views/Home/Index.aspx Code:{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<p>
<%= Html.Encode(ViewData["Message"]) %>
</p>
</asp:Content>
<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:"Default", // Route name
"{controller}/{action}/{param}", // URL with parameters
new { controller = "Home", action = "Index", param = "" } // Parameter defaults
);
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:{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
ViewData["Param"] = param;
ViewData["ParaInt"] = paraInt;
ViewData["ParaStr"] = paraStr;
return View();
}
<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>
结果:<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¶str=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数据.
<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>
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:
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;
}
}
}
}
public ActionResult About()
{
ViewData["Title"] = "About Page";
return View(Space.Instance.GetSpace());
}
在About.aspx.cs后天修改如下.
{
ViewData["Title"] = "About Page";
return View(Space.Instance.GetSpace());
}
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>
<%} %>
结果:
<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
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;
}
}
}
}
[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);
}
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表单的内容将显示到当前页面<%=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(); %>