ASP.NET MVC Controller向View传值的几种方式

1)ViewBag

ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName

控制器代码:

1 public ActionResult Index()
2 {
3     ViewBag.name = "梁顺盛";
4     ViewBag.message = "欢迎使用MVC设计模式~~";
5     return View();
6 }  

视图代码:

<div>
    <!--利用HtmlHelper创建TextBox时,使用名称与ViewBag中的Key一致, 就会自动实现值绑定-->
    @Html.TextBox("name")
    @ViewBag.message
</div> 

2)ViewData

ViewData只对当前Action有效,它是一个字典集合,通过key值读取对应的value;

控制器代码:

public ActionResult Index()
        {
            ViewData["name"] = "梁顺盛";
            ViewData["message"] = "欢迎使用MVC设计模式~~";
            return View();
        }  

视图代码:

<div>
        <!--利用HtmlHelper创建TextBox时,使用名称与ViewData中的Key一致, 就会自动实现值绑定-->
        @Html.TextBox("name")
        @ViewData["message"]
    </div> 

3)TempData

使用TempData和使用ViewData方法是一样的,但是它可用于在不同的Action之间传值,这是ViewData做不到的。

控制器代码:

public class MVCController : Controller
{
    public ActionResult Index1()
    {
        TempData["name"] = "梁顺盛";
        return View();
    }  

    public ActionResult Index2()
    {
        string strName = TempData["name"].ToString()
        return View();
    }  

上面的代码中,Index()给TempData添加了一个键值对,假设我们先请求Index这个Action,接着请求Index2这个Action,那么在Index2中,我们便可以得到之前添加到TempData的键值对。有趣的是,这时如果再次请求Index2,那么从TempData中读到的MyName的值会是null。这是因为TempData和一个临时的Session差不多,当Acion执行的时候它做为一个全局对象保存的内存中,而一旦Action的执行完成,就会释放内存空间,这就是它与ViewData最大的不同之处。

4)Model

Controller通过Model传值应该是MVC中使用最为普遍的一种传值方式,通过强类型绑定,在View中可以很方便的通过Model的相应属性得到想要的值。

Model代码:

public partial class YzAdministratorEntity
{
    public YzAdministratorEntity()
    {
        this.YzClearRecordEntity = new HashSet<YzClearRecordEntity>();
        this.YzNotifyInfoEntity = new HashSet<YzNotifyInfoEntity>();
    }  

    public System.Guid ID { get; set; }
    public string AdminPassword { get; set; }
    public string AdminName { get; set; }
    public bool isUsed { get; set; }  

    [Required(AllowEmptyStrings = false, ErrorMessage = "用户ID不能为空")]
    public string AdministratorID { get; set; }
    public string AdminLevel { get; set; }  

    public virtual ICollection<YzClearRecordEntity> YzClearRecordEntity { get; set; }
    public virtual ICollection<YzNotifyInfoEntity> YzNotifyInfoEntity { get; set; }
}  

视图代码:

强类型绑定:

@model Model.YzAdministratorEntity

通过Linq自动匹配Model和Label或TxtBox的属性值:

<div>
    <span class="editor-label">
        @Html.Label("编号:")
    </span>
    <span class="editor-field">
        @Html.EditorFor(a => a.AdministratorID)
        @Html.ValidationMessageFor(model => model.AdministratorID)
    </span>
</div>  

<div>
    <span class="editor-label">
        @Html.Label("密码:")
    </span>
    <span class="editor-field">
        @Html.EditorFor(a => a.AdminPassword )
    </span>
</div>  

<div>
    <span class="editor-label">
        @Html.Label("真实姓名:")
    </span>
    <span class="editor-field">
        @Html.EditorFor(a => a.AdminName )
    </span>
</div>  
时间: 2024-10-12 18:56:20

ASP.NET MVC Controller向View传值的几种方式的相关文章

ASP.NET MVC 控制器向View传值的三种方法

转自:http://www.cnblogs.com/shinima/p/3940452.html 1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResult Index() { DateTime date = DateTime.Now; return View(date); } 然后我们在视图中使用Razor的Model关键字来访问这个对象 @{ ViewBag.Title = "Index"; } <h2>Index<

MVC Controller向View传值(ViewData与ViewBag)

最近在开发项目中,使用的是ASP.NET MVC由于之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习! 一:使用 ViewData使用: public ActionResult Index() { List<string> colors = new List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); Vi

MVC Controller 与 View 传值

Controller 到 View 1 强类型 控制器 // GET: /Test/ public ActionResult Index() { DateTime date = DateTime.Now; //大部分时候使用自定义类型 return View(date); } 视图 @model DateTime @{ ViewBag.Title = "Index"; } <h2>Index</h2> <h2>The time is: @Model.

Asp.Net MVC Control向View传值

 1.通过View(Parameter)参数传值     Control: namespace MyMVCDemo.Controllers { public class PersonController : Controller { // // GET: /Person/ public ActionResult Index() { Person whiteperson = new Person(); whiteperson.Id = 1; whiteperson.Name = "James&qu

MVC 控制器向View传值的三种方法

1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResult Index() { DateTime date = DateTime.Now; return View(date); } 然后我们在视图中使用Razor的Model关键字来访问这个对象 @{ ViewBag.Title = "Index"; } <h2>Index</h2> The day is: @(((DateTime)Model).DayOfWeek

asp.net MVC 枚举类型的处理的几种方式

1.基架自动生成@Html.EnumDropDownListFor()辅助方法映射到模型类属性的元数据. @model MajorConstruction.Models.Course <div class="form-group"> @Html.LabelFor(model => model.CourseType, htmlAttributes: new { @class = "control-label col-md-2" }) <div

Controller向View传值方式总结

http://www.cnblogs.com/guohu/p/4377974.html 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通View页面传一个Model对象 向强类型页面传传一个Model对象 用一个ViewModel对象解决所有问题 首先我们需要明确的是我们从controller向view传值的时候,这些方式分别处于什么样的地位: 我们一般会向页面传递一个主要的类型的数据,一般是情

ASP.NET没有魔法——ASP.NET MVC Razor与View渲染

对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到对应的Html代码以及相关资源,使得浏览器能够完成正确的呈现工作. ASP.NET MVC作为一个Web应用构建框架View承担了UI显示的功能,在开发过程中View以Action的名称命名,当用户的请求被路由到某一Action方法时,ASP.NET MVC将会根据Action的名称来获取到对应的V

EF5(7) 后台使用SelectListItem传值给前台显示Select下拉框;mvc后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式

一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Order控制器,显示订单列表,并且在修改订单的时候,把用户的id 用 select 下拉框显示出来,并且可以提交修改数据   1.1 我们通过比较原始的方法,来把数据 传递到前台后,前台使用  循环来显示 select 并且显示是哪个元素被选中 我们在前台的cshtml中,使用 @model 命令 指定