WHAT?
这篇博客讲的是什么?干货!!不多说了,亲爱的你,往下看吧~希望能给你带来一些收获
上一篇博客讲到了如何把view上的数据传递给action---请点击文章【MVC】 action方法接收浏览器参数方式,那么后台的数据怎么传回去呢?下面小编来给你分享一下关于传递数据的那些事~~
HOW?
有4种方式来传参,其实在我眼里,只有一种方法。请看下方demo
1、ViewBag
controller里面的代码:
public class ElsaTestController : Controller
{
//
// GET: /ElsaTest/
public ActionResult Index()
{
//1、使用viewBag,动态数据类型
ViewBag.name = "Elsa's viewbag";
return View();
}
}
在html里面如何获取?
@{
ViewBag.Title = "Index";
}
<h2>Elsa'test</h2>
<br> @ViewBag.name
效果:
好了,这篇博客就介绍到这里,下次再见。。
好吧,其实其他3种方式都一样,可是他们之间有一些微妙的关系,还是让我来为大家揭晓答案吧~
2、ViewData
controller代码:
public ActionResult Index()
{
//1、使用viewBag,动态数据类型
//ViewBag.name = "Elsa's viewbag";
//2、使用viewDate这种键值对的方式
ViewData["name"] = "Elsa'test viewdata!";
return View();
}
view:
<h2>Elsa'test</h2>
@*<br> @ViewBag.name*@
@ViewData["name"]
效果:
效果肯定是谁有问题的,不看是谁写的啊。。哈哈哈哈。。。
ViewBag & ViewData的关系???好奇吗?
其实viewbag和viewdata可以共享数据的,但是他们依然是两种不同的属性。
比如:
controller:
public ActionResult Index()
{
//1、使用viewBag,动态数据类型
ViewBag.name = "Elsa's viewbag";
//2、使用viewDate这种键值对的方式
ViewData["test"] = "Elsa'test viewdata!";
return View();
}
View:
<h2>Elsa'test</h2>
@ViewData["name"]
效果:
看到没有?认真的你肯定发现了,我在html里面调用的是viewdata["name"];而name是在controller里面的viewbag中声明的,所以,他们可以相互共享数据~~
3、TempData
controller:
//3、使用tempData
TempData ["temp"]="Elsa's tempdata";
view:
@TempData["temp"]
4、model
controller:
//4、使用model
Models.test modeltest = new Models.test() { Name = "haha" };
return View(modeltest);
view:
@Model.Name
其实,model是余数viewdata的属性的,相当于写viewdata.model.Name;
小结:
好了,action向view传参的4个方式就介绍到这里,最后再告诉大家一个小知识~action方法输出的返回值主要有3种:string、viewresult、jsonresult。次要的还有很多,希望我们共同进步!