浅谈MVC页面之间参数传递

关于MVC页面之间的传值,有多种方式,下面,咱们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给你们分享一下有什么不一样。前端

1、Html.RenderAction 方式页面之间传递参数的方式:测试

Html.RenderAction 方式 是访问的另外一页面的Controller,并将参数传入另外一页面的Controller中相应的Action中的参数中。spa

例如:我有这么一个Controller和Action(是一个部分视图的)code

1     public class TopController : Controller
2     {
3         // GET: Top
4         public ActionResult Index(string content)
5         {
6             ViewBag.content = content;
7             return PartialView();
8         }
9     }

这个Index中,将接到的参数写到ViewBag.content中,一面前端View界面中取到。以下:对象

那么咱们如何利用Html.RenderAction方式,将参数传入到这个页面而后展现出来呢?blog

这就是利用Html.RenderAction方式,传递参数给Top 中的 Index 页的。get

你们学会了嘛?string

2、Html.RenderPartial 方式io

Html.RenderPartial 方式 与 Html.RenderAction 不一样,他没有将参数传递到另外一页面的Controller对应的Action,而是直接传递到另外一界面的Model中。class

因此,Html.RenderPartial传值不会通过Controller直接进入Model。

下面咱们来看一下具体的操做。

一、首先咱们简历一个简单的Model模型。

1     public class Person
2     {
3         public string Name { get; set; }
4         public string Sex { get; set; }
5      
6     }

二、创建界面Boot页,(Boot本身取的名字) 其 View以下:

上面代码中,咱们将页面的model制定未Person类。在两个<h2>标签中根据类的属性去取相应的值。

创建完这个页面,咱们就要向这个页面传值了,那么如何用 Html.RenderPartial 向其中传值呢? 以下:

上述红框中即为用 Html.RenderPartial 方式传值。

这种方式彷佛还有不足的地方,是的,咱们不可能每次用Html.RenderPartial方式传值的时候,都要去创建一个Model模型,这样的话几乎是场灾难。那么如何避免呢?

咱们用Html.RenderPartial方式向另外一界面传值的理想方式或许是这样的:

如上面红框中所示。直接用一个匿名对象将参数包进去,而后传递过去就行,可是,另外一个页面是否会接受到呢?

或许,你们早已经测试过了,答案是:不能够。在Model中去Name和Sex,会报错的(相信各位园友们早已实验过了)

那么咱们如何改进,能让这个页面能够接受到这种方式的参数传递呢?以下:

上述方式去取值,就会取到传递过来的匿名对象的相应属性了。是否是很high啊,之后传值就方便多了。

传递的参数的类型也能够是多种多样,例如:

咱们加了一个DateTime类型的参数,那么另外一界面仍是同样,照接不误。

 页面

好了,关于MVC页面之间参数传递,就分享到这里了。

相关文章
相关标签/搜索