我不太熟悉ASP.NET。我在2010年beta2看了一下MVC 2并注意到我的主机不会支持它。由于我的应用程序是后端基础和轻量级接口,我认为常规ASP.NET应该可以找到一个工作。
在任何一种情况下,我都觉得编写
非常烦人<div>
<% foreach(var link in Html.Encode(ViewData["Links"])) { %>
<a href="<%=link%>"><%=link%></a><br>
<% } %>
<div>
我发现使用Response.Write或在@“”字符串中返回带有html的字符串要容易得多。这个例子很简单,我有一些相当复杂的数据要显示。我错过了什么或者我应该在我的C#源代码中编写任何复杂的HTML吗?
答案 0 :(得分:2)
如果您愿意,可以使用Response.Write,但我建议您查看Repeater控件以了解此类任务。您可以使用模板和数据绑定,也可以处理ItemDataBound事件。
答案 1 :(得分:2)
哦,伙计。
不要将代码放入标记中。使用转发器或列表视图控件。诸如循环等代码属于(.cs)文件后面的代码。
ASP.NET页面模型的一个好处是几乎完全分离代码和标记。如果你发现自己放了&lt;%和%&gt;在你的标记中,采取漫长的时刻,并问问自己为什么你所做的不是代码文件。
相反,如果您发现自己在代码隐藏中生成了标记,请采取另一个漫长的时刻,并问自己为什么。中继器,列表视图等非常紧凑,非常快,专为此任务而设计。使用可用的工具,并保持代码和标记分开。
更新:回复以下评论。
如果您要做的只是发出锚点,请执行以下操作:
标记:
<a runat="server" id="anchorMyLink">My link</a>
代码隐藏:
void Page_Load(object sender, EventArgs e)
{
anchorMyLink.InnerText="Text that user sees as link";
anchorMyLink.Href="http://www.google.com";
}
这假设您只想发出单个链接,而不是发生在重复列表中的内容(如表格或行列表中)。服务器控件(具有runat =“server”属性的任何东西)都可以在代码隐藏中以这种方式进行修改。
答案 2 :(得分:1)
这与前面提到的问题非常类似,我回答了很长时间:
Does anyone beside me just not get asp.net MVC?
由于被接受,我的最佳答案。我只是留下链接而不是将其全部复制到此处,但我强烈建议您查看它,因为我认为它将解决您的问题和疑虑。