2010-10-25 97 views
0

從我以前的帖子之一(ASP.NET MVC2 Master Page - Server side script not rendering, first bracket being escaped)開始,我現在有類似的問題。ASP.NET MVC - 動態設置UserControl的屬性不能正確呈現

這次試圖動態設置UserControl的屬性。

**對於任何熟悉N2CMS,它是AdvancedPager控制*

下面是我在做什麼。

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.master" AutoEventWireup="true" Inherits="System.Web.Mvc.ViewPage<Products>" %> 
<%@ Register TagPrefix="AddOn" TagName="Pager" Src="~/Views/SharedParts/PagerControl.ascx" %> 
<asp:Content ContentPlaceHolderID="Head" runat="server"> 
    // content for head section 
</asp:Content> 

<asp:Content ContentPlaceHolderID="MainContent" runat="server"> 
    <AddOn:Pager runat="server" ID="AdvPager" PerPage="<%= Model.ItemsPerPage %>" Total="<% Model.Count %>" /> 
</asp:Content> 

這個問題似乎是在PerPage或設定值總財產。我無法調試,因爲我沒有源代碼,但是,我相信這是我在之前的文章中遇到的同樣的問題,因爲如果我用硬編碼值替換動態ASP代碼,它可以正常工作。

任何想法的變通?我曾嘗試將整個事件放入String.Format,但只是將<AddOn:Pager runat="server"...輸出到頁面,但實際上並未正確呈現控件。

+0

盲猜測=>'<%#Model.ItemsPerPage%>' – 2010-10-25 12:32:45

+0

@Arnis:嘗試這樣做,同樣的問題。 – James 2010-10-25 13:19:39

回答

3

帶有runat="server"的用戶控件在ASP.NET MVC中是不允許的。它們依賴於MVC中不再存在的經典WebForms生命週期,甚至沒有談論ViewState和PostBack模型。

看看這個控件的名稱,它看起來像一個尋呼機。有一個nice collection of HTML helpers用於在ASP.NET MVC中呈現分頁的網格,您可以查看一下。

+0

我嘗試刪除'runat =「服務器」'標籤,但隨後控件根本不呈現。我將此與N2CMS MVC版本結合使用,無論出於何種原因,我確實需要runat屬性。 – James 2010-10-25 13:18:04

+1

@詹姆斯,是的,你需要runat =「server」屬性,但這不適用於ASP.NET MVC。如果您想使用服務器控件而不是MVC,請使用經典的Web窗體應用程序。 – 2010-10-25 13:21:30

+0

我已經使用MVC框架實現了大部分網站,所以切換到WebForms是不成問題的。所以看起來我需要爲此調整我自己的控制權? – James 2010-10-25 13:27:50