您的位置:首页 > 编程语言 > ASP

ASP.NET MVC5(3)数据从控制器传递给视图

2015-08-09 15:11 639 查看
控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模板应该只和控制器所提供的数据进行交互。维持这种"隔离关系"可以帮助,保持代码的干净、测试性和更易维护。

更改 
Welcome
方法,将
Message
NumTimes
的值添加到 ViewBag对象里。
ViewBag
是一个动态的对象,这意味着在您没有给
ViewBag
放置属性时,它没有任何属性,您可以把任何您想放置的对象放入到
 ViewBag
对象中。ASP.NET
MVC model binding system 会自动将地址栏中URL里的 query string映射到您方法中的参数(
name
 和
numTimes
)。

完整的HelloWorldController.cs文件如下所示:

using System.Web;
using System.Web.Mvc;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Welcome(string name, int numTimes = 1)
{
ViewBag.Message = "Hello " + name;
ViewBag.NumTimes = numTimes;
return View();
}
}
}


现在
ViewBag
对象包含了数据,并将自动传递给视图模板。
接下来,您需要一个欢迎视图模板 !

下面显示了完整的Welcome.cshtml文件。

@{
ViewBag.Title = "Welcome";
}
<h2>Welcome</h2>
<ul>
@for (int i = 0; i < ViewBag.NumTimes; i++)
{
<li>@ViewBag.Message</li>
}
</ul>


运行应用程序,并浏览下面的 URL : http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4

现在,模型绑定(model
binder) 使得数据从URL传递给控制器。控制器将数据装入到
ViewBag
对象中,通过该对象传递给视图。然后视图为用户生成显示所需的HTML。

url->控制器->视图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: