• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETMVCController向View传值的几种方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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>  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何在ASP.NETCore2.0中使用Razor页面发布时间:2022-07-10
下一篇:
asp.netcore文件上传与下载发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap