Controller和View之间数据传递(前后台数据传递)方式
Controller -> View: a) 使用ViewData传递数据 我们在Controller中定义如下:
ViewData[“Message_ViewData”] = “ Hello ViewData!”;然后在View中读取Controller中定义的ViewData数据,代码如下:
@Html.Encode(ViewData["Message_ViewData"])js中读取ViewData中数据如下:
<pre name="code" class="javascript"> <script type="text/javascript"> var viewData = '@ViewData["Message_ViewData"]'; </script>b) 使用ViewBag传递数据 我们在Controller中定义如下:
ViewBag.Message_ViewBag = “ Hello ViewBag !”;然后在View中读取Controller中定义的ViewBag数据,代码如下:
@Html.Encode(ViewBag.Message_ViewBag)js中读取ViewBag中数据如下:
<script type="text/javascript"> var viewBag= '@ViewBag.Message_ViewBag'; </script>c) 使用TempData传递数据 我们在Controller中定义如下:
TempData[“Message”] = “Hello word!”;然后在View中读取Controller中定义的TempData数据,代码如下:
@Html.Encode(TempData["Message_TempData"])js中读取TempData中数据如下:
<script type="text/javascript"> var tempData = '@TempData["Message"]'; </script>d) 使用Model传递数据 首先要创建Model实体类 创建强类型的View以后,View的第一行代码如下所示:
@model Test.Models.HelloModel就代表了这个View使用的Model为“Test.Models.HelloModel” 然后在View中读取Model中定义的数据,代码如下:
@Html.Encode(Model.Name)js中读取Model中数据如下:
<script type="text/javascript"> var modelName = '@Model.Name'; </script>View -> Controller: a) 通过Request.Form读取表单数据 我们在View层做如下定义:
@using (Html.BeginForm("HelloModelTest", "Home", FormMethod.Post)) { @Html.TextBox("Name"); @Html.TextBox("Text"); <input type="submit" value="提交" /> }注意: HelloModelTest为对应的Action名,Home为对应的Controller名称 然后在Controller层,通过Request.Form读取表单数据的代码如下所示:
[HttpPost] public ActionResult HelloModelTest() { string name= Request.Form["Name"]; string text= Request.Form["Text"]; return View(); }b) 通过FormCollection读取表单数据 我们在View层做如下定义:
@using (Html.BeginForm("HelloModelTest", "Home", FormMethod.Post)) { @Html.TextBox("Name"); @Html.TextBox("Text"); <input type="submit" value="提交" /> }然后在Controller层,通过FormCollection读取表单数据的代码如下所示:
[HttpPost] public ActionResult HelloModelTest(FormCollection fc) { string name= fc["Name"]; string text = fc["Text"]; return View(); }c) 模型绑定 我们在View层做如下定义:
@using (Html.BeginForm("HelloModelTest", "Home", FormMethod.Post)) { @Html.TextBox("Name"); @Html.TextBox("Text"); <input type="submit" value="提交" /> }默认的模型绑定 相较于从请求中获取表单值,下面的Edit Action则是简单地以一个模型对像为参数(Album):
[HttpPost] public ActionResult HelloModelTest( HelloModel model) { // ... }