ASP.NET MVC(2)中有没有办法做类似的事情:
<table>
<tr>
<% Model.Pager.TemplateNextPage = { %>
<li><a href={link-next-page}>Next</a></li>
<% } %>
<% Model.Pager.TemplatePageNumber = { %>
<li><a href={link-page-number}>{number}</a></li>
<% } %>
<% Model.Pager.TemplatePageNumberActive = { %>
<li>{number}</li>
<% } %>
</tr>
</table>
一般的想法是让设计师能够指定模板。
答案 0 :(得分:1)
不喜欢那样。 “%&gt;”之间的代码和“&lt;%”,例如。
<% Model.Pager.TemplateNextPage = { %>
<li><a href={link-next-page}>Next</a></li>
<% } %>
...将翻译为......
Model.Pager.TemplateNextPage = {;
Response.Write("<li><a href={link-next-page}>Next</a></li>");
};
编译时(忽略示例中的空格)。所以它并没有真正起作用。
然而,您可以使用Asp.Net WebForms控件并创建自定义控件。它将在Asp.Net MVC页面中工作。并非所有功能都有效(例如与表单回发相关),但足以满足您的需求。
E.g。表格控件是这样的:
<asp:Table runat="server">
<asp:TableFooterRow>
<asp:TableCell>foo</asp:TableCell>
<asp:TableCell>faa</asp:TableCell>
</asp:TableFooterRow>
</asp:Table>
您可以扩展它 - 或者从头开始创建一个控件,允许您创建自己的TemplateNextPage等。
...但这不是Asp.Net MVC的方式 - 它是旧的Asp.Net WebForms方式。它只适用于Asp.Net MVC页面。
你拥有的另一个选择是创建自己的模板引擎,但这是相当多的工作,我认为intellisense部分对你来说非常重要,所以它也会搞砸。