ASP.NET MVC - 动态设置UserControl的属性无法正确呈现

时间:2010-10-25 11:43:28

标签: asp.net-mvc user-controls n2cms

作为我以前的一篇帖子(ASP.NET MVC2 Master Page - Server side script not rendering, first bracket being escaped)的后续内容,我现在遇到了类似的问题。

这次尝试动态设置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或Total属性中设置的值。我无法调试这个,因为我没有源代码,但是,我相信这是我在上一篇文章中遇到的同样问题,因为如果我用硬编码值替换动态ASP代码,它可以正常工作。

任何改变的想法?我已尝试将整个内容放入String.Format,但只是将<AddOn:Pager runat="server"...输出到页面,它实际上并没有正确呈现控件。

1 个答案:

答案 0 :(得分:3)

带有runat="server"的UserControls在ASP.NET MVC中是禁忌。它们依赖于MVC中不再存在的经典WebForms生命周期,甚至没有谈论ViewState和PostBack模型。

查看此控件的名称,它看起来像一个寻呼机。在ASP.NET MVC中有一个用于渲染分页网格的nice collection of HTML helpers,你可能会看一下。