这是我的代码
<ul>
<% foreach (string str in more())
{%>
<li><% $str %> </li>
<% } %>
</ul>
当我运行代码时出现错误&lt;%$ str%&gt;不允许如何在列表标签内放置str? 提前谢谢
答案 0 :(得分:2)
答案 1 :(得分:0)
你实际上不能把它写成PHP风格。 ASP WebForms有另一个结构,其中代码隐藏(逻辑)和视图(aspx)是两个独立的文件。 通过将数据集实际绑定到servercontrol来实现数据与视图的绑定。
一个例子 将新的服务器控件添加到您的aspx页面:
<asp:label runat="server" ID="lblMyLabel"/>
在aspx.cs文件中更改(或添加,如果没有)Page_Load事件:
protected void Page_Load(object sender, EventArgs e) {
lblMyLabel.Text="Hello World";
}
如您所见,您可以直接从代码访问控件。整个过程基于事件,因此您可以在不同的执行时间访问您的控件。阅读本文以了解更多相关信息:http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx 您可以为控件注册自己的事件处理程序(和事件),以响应用户输入或执行工作流程。
编辑: 是的,您可以使用“&lt;%=%&gt;”,Eval()和&lt;%#%&gt;从视图中访问公共变量,但这不是一个好的编码风格。
我希望我能帮助你。
答案 2 :(得分:0)
如果您需要为客户端提供某种调试其Web服务器/应用程序配置的方法,则创建一个内嵌代码的单页aspx文件可能非常有用。
所需要做的只是用...括起来的代码...
<%@ Page Language="C#" %>
<!DOCTYPE html>
<%@Import Namespace="System.IO"%>
<script runat="server">
public static string getProcessName()
{
return "Debug Script";
}
protected void Page_PreInit(object sender, EventArgs e) {
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Debug Script</title>
</head>
<body>
<h1>Debug Script</h1>
<table>
<thead><tr><th>Item/Test</th><th>Result</th></tr></thead>
<tbody>
<tr><th>Process</th><td><%=getProcessName() %></td></tr>
<tr><th>App Pool</td><td><%=System.Environment.GetEnvironmentVariable(
"APP_POOL_ID", EnvironmentVariableTarget.Process) %></td></tr>
<tr><th>Is 64 Bit</th><td><%=Environment.Is64BitProcess %></td></tr>
</tbody>
</table>
</body>
</html>
如果他们的网络服务器甚至无法加载您的调试脚本,那么问题肯定就在他们这边。
我使用的入门模板如下...我的版本添加了日志记录和更多详细信息。
ViewModel
public class YarnListViewModel
{
public IPagedList<YarnFullAdmin> YarnList { get; set; }
}
Controller
var yarns = _context.YarnFullAdmins
.Include(y => y.Brand)
.Include(y => y.ColorProduct)
.Where(y => y.Id > 0)
.Select(y => new {
y.Id,
y.BrandId,
y.Brand,
y.ProductName
});
var viewModel = new YarnListViewModel
{
YarnList = yarns.ToPagedList(pageNumber, pageSize)
};
return View(viewModel);