MVC 各种传值方式

示例一:
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:

<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表单的内容将显示到当前页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值