在PHP中,我可以定义和使用这样的函数:
<html>
<head></head>
<body>
<?php
function processItem($item)
{
$item = $item * 10;
?>
The item is <strong><?= $item ?></strong><br />
<?php
}
?>
<?php
$items = array(1,2,3,4);
for($i = 0; $i < $items.length; $i++)
{
processItem($items[$i]);
}
?>
</body>
</html>
如果我尝试在C#中使用<% %>
语法执行相同的操作,它将始终抛出错误。它不喜欢在函数中显示额外的text / html。
有人可以告诉我如何在C#中编写上述示例吗?我无法找到会在Google中产生结果的条款
答案 0 :(得分:0)
创建* .cshtml文件,并使用Razor View Engine。它支持您正在寻找的那种混乱的语法。
答案 1 :(得分:0)
如果我理解正确,您似乎希望将代码放在与html相同的页面上。这在asp.net中非常简单,有时也称为“单个文件”代码。这是一个例子:http://www.codeproject.com/Articles/8178/Inline-Single-File-vs-CodeBehind
主要区别在于你应该把它放在Head标签之间:
<%@ Page Language="C#" debug="true" trace="false"%>
<html>
<head>
<title></title>
<script runat="server">
// ASP.NET page code goes here
void Page_Load() {
//On Page Load Run this Code
}
</script>
</head>
<body>
<form runat="server">
<!-- ASP.NET controls go here -->
</form>
</body>
</html>
这种情况在很久以前并不罕见,但大多数使用asp.net网络表单的人更喜欢使用文件分离并使用代码隐藏文件。
如果您来自PHP并且已经习惯了这种编码风格,那么您可能会发现这个和Razor混合在一起。
答案 2 :(得分:0)
解决方案:感谢@ joel-coehoorn和How to create a function in a cshtml template?
<html>
<head></head>
<body>
@helper processItem(int item)
{
item = item * 10;
<text>
The item is <strong>@item</strong><br />
</text>
var anotherCalculation = item + 2;
<strong>some more text</strong>
}
@{
var items = myIntArray;
for(var i = 0; i < items.Count; i++)
{
processItem(items[i]);
}
}
</body>
</html>