2012-03-22 80 views
1

我是asp.net Mvc的初學者。我嘗試做一些練習來學習它。我在這個環節的樣品:http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx如何使用MVC 3 aspx引擎中的方法以及如何在mvc 3中使用Repeater控件?

我犯同樣的樣品使用此鏈接:如果您

namespace MvcAppExtNet.Controllers 
{ 
    public class ProductController : Controller 
    { 
     // 
     // GET: /Product/ 

     public void GetProduct() 
     { 
      List<Products> list = new List<Products>() { 
       new Products() { Id = 1, Name = "Hıyar" }, 
       new Products() { Id = 2, Name = "Kereviz" } }; 

      ViewData["Products"] = list; 
     } 

    } 
} 

enter image description here

我的觀點:


<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" CodeBehind="~/Views/Product/ListProducts.aspx.cs" AutoEventWireup="true" Inherits="MvcAppExtNet.Views.Product.ListProducts" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    ListProducts 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 

<h2>ListProducts</h2> 


</asp:Content> 

<asp:Content ID="Content3" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 

<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder2" runat="server"> 
<asp:Repeater ID="ProductList" runat="server"> 
<ItemTemplate> 
<li> 
<%#Eval("Name") %> 
</li> 
</ItemTemplate> 
</asp:Repeater> 
</asp:Content> 

我的控制器看看ListProducts.aspx.cs:

enter image description here

怎麼看我的Repeater控件(產品列表是一種中繼!!!!)在C#代碼?另外如何使用方法(不使用ActionResult)?非常感謝。

+2

asp.net MVC不是asp。net webforms,以類似於中繼器的方式呈現數據,您可以在視圖文件中編寫一個'foreach'。 – Matthew 2012-03-22 13:08:14

+1

MVC中沒有數據綁定或服務器控件,這種方式真的更好。在MVC中,您將視圖模型傳遞給視圖,並在那裏編寫「顯示邏輯」。我建議你在使用它來完成任何真實項目之前,先通過Asp.Net MVC的基礎知識。 – 2012-03-22 13:12:38

回答

2

這個問題被標記在ASP.NET MVC3,所以我打算這樣回答。

請繼續閱讀http://www.asp.net/mvc上的許多教程。這真是一個令人興奮的框架,我更喜歡它的網頁形式。從MVC3開始。

它應該完成的方式是控制器通過執行存儲庫調用從數據庫獲取產品的列表。控制器將這個產品列表傳遞給視圖。該視圖將呈現它。基本上,這是我會怎麼做:

產品類:

public class Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

我的視圖模型:

public class ProductListViewModel 
{ 
    IEnumerable<Product> Products { get; set; } 
} 

在我控制我的操作方法我做一個數據庫調用返回的產品。然後,我實例化一個新的視圖模型對象和屬性設置的產品到從數據庫返回的名單:

public ActionResult List() 
{ 
    ProductListViewModel viewModel = new ProductListViewModel 
    { 
      Products = productRepository.GetAllProducts() 
    }; 

    return View(viewModel); 
} 

在我看來,我有以下幾點:

<table> 

@foreach(Product product in Model.Products) 
{ 
    <tr> 
      <td>Product Name:</td> 
      <td>product.Name</td> 
    </tr> 
} 

</table> 

我希望我已經爲你清理了一些東西。這只是一個指南,使用它並相應地修改它。

3

MVC的工作方式與Web表單有所不同。您不要在視圖中使用控件,並且MVC不具有中繼控件。它有模型綁定和Razor,可以讓你更加控制。

隨着閱讀的一點點,你應該儘快找到你的頭。我建議你開始here

好運

3

MVC 3不具有控制和視圖狀態。如果你問這個問題,那麼你錯過了一些有關MVC模式的基本知識,因此我建議你通過教程工作http://www.asp.net/mvc