作为我以前的一篇帖子(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"...
输出到页面,它实际上并没有正确呈现控件。
答案 0 :(得分:3)
带有runat="server"
的UserControls在ASP.NET MVC中是禁忌。它们依赖于MVC中不再存在的经典WebForms生命周期,甚至没有谈论ViewState和PostBack模型。
查看此控件的名称,它看起来像一个寻呼机。在ASP.NET MVC中有一个用于渲染分页网格的nice collection of HTML helpers,你可能会看一下。