2010-06-07 65 views
1

我想添加ASP.NET MVC功能(特别是路由)到我现有的ASP.NET Web应用程序。我添加了一个受控和视图(一个ASP .net page)。现在我想知道如何在视图中显示我的自定义类(例如:用户)的对象的细节?可以在ViewData集合中分配对象并将其呈现在视图中?怎么样 ?我已经有了一个Datalayer(在ADO.NET中),它正在为当前的ASP.NET Web应用程序运行。所以我想使用它。ASP.NET MVC:如何显示视图页面中的自定义对象属性

我在控制器尝试这种

public ActionResult Index() 
    { 
     BusinessObject.User objUser = new BusinessObject.User(); 
     objUser.EmailId = "[email protected]"; 
     objUser.ProfileTitle = "Web developer with 6 yrs expereince"; 

     ViewData["objUser"] = objUser; 
     ViewData["Message"] = "This is ASP.NET MVC!"; 

     return View(); 
    } 

如何使用这个视图页面显示用户的详细信息?

在此先感谢

回答

2

您应该将对象作为视图模型(或部分视图模式,与你的消息一起)传递给一个强类型的视图。然后,您可以简单地在视图中引用模型属性。

public class IndexViewModel 
{ 
    public BusinessObject.User User { get; set; } 
    public string Message { get; set; } 
} 

(或更好,但只是从你确实需要的用户对象的属性)

控制器

public ActionResult Index() 
{ 
    BusinessObject.User objUser = new BusinessObject.User(); 
    objUser.EmailId = "[email protected]"; 
    objUser.ProfileTitle = "Web developer with 6 yrs expereince"; 

    return View(new IndexViewModel { 
     User = objUser, 
     Message = "This is ASP.NET MVC!"; 
    }); 
} 

查看

<%@ Page Title="" Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.MVC.ViewPage<MyWebSite.Models.IndexViewModel>" %> 

<%= Html.Encode(Model.User.EmailId) %> 
+0

这是什么继承=” System.Web.MVC.ViewPage “的意思是? – Shyju 2010-06-07 17:59:40

+0

@shyju - 这意味着ViewPage的模型属性的类型为“MyWebSite.Models.IndexViewModel” - 名称空间是假的,但意味着与示例中的模型类相对应。 – tvanfosson 2010-06-07 18:07:08

相关问题