2010-05-10 68 views
0

Previous postasp.net的MVC用戶控制問題foreach循環

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 

<% 
    MvcApplication1.Models.FeaturesRepository _model = new MvcApplication1.Models.FeaturesRepository(); 
%> 

<% foreach (var md in _model.GetAllFeatures()) 
    { %> 
     <li><%= md.vcr_FeaturesName %></li> 
<% } %> 

它是參照以前的帖子above.Is有什麼錯foreach循環(結果是正確的,但它顯示的是該系列的添加,添加,添加,添加,添加...,這是getallfeatures的最後一個記錄。

+3

您違反了mvc模式代表的所有內容。 – 2010-05-10 20:45:18

+1

你爲什麼要發表評論的代碼,請簡化你的例子,而不是雙重發布,寫一個全面的問題。 至於Mattias談到的MVC模式。閱讀此博客文章:http://www.howmvcworks.net/OnViews/BuildingAStronglyTyped查看 ,應該有助於這個具體情況... – 2010-05-10 21:10:08

+0

我不是MVC專家,這可能不是什麼是錯的心臟,但我會修改控件,以便將您的集合作爲參數傳遞給它。我認爲Mattias所描述的罪孽是,你同時聲明瞭一個Model變量,並從這個控件的數據庫中檢索數據,你不應該在這裏做這些。 – jason 2010-05-10 21:10:44

回答

-1

@mazhar,而不是像你一樣在MVC中創建你的模型,你應該返回模型到視圖。

在你的控制器中,你會說類似return View(MyModel);

我沒有看到你的foreach有什麼問題,但是如果你要一遍又一遍地複製一個控件,你可能需要考慮PartialView並通過傳遞適當的模型來渲染它。

<% foreach (var md in model.features) Html.RenderPartial(md); %> 

以上是未經測試但接近我認爲。

我沒有看過以前的文章,因爲我認爲你需要首先將其轉化爲MVC方式。我不認爲技術上你的代碼中有任何不正確的東西,並且懷疑它是你的控制器和模型代碼。

我已編輯您的帖子以刪除註釋掉的代碼。非常容易混淆。