问题已解决:我找到了一个可重复使用的解决方案。谢谢大家的帮助。
我很沮丧,也不知道我在做什么。我试图建立一个网页,而我尝试做的其中一件事就是减少了代码。为了做到这一点,我需要创建一个方法,我对Java中的方法有广泛的了解,但是在尝试使用razor语法在ASP.NET中编写C#时却没有。我面临的问题是我的@helper拒绝访问全局哈希表"字典"。我尝试了很多不同的事情,并决定转向stackoverflow寻求帮助。提前谢谢。
更新:
错误消息是" CS0103:名称'字典'在当前上下文中不存在"
我需要一个哈希表,因为我从数据库中提取,检查是否为null,如果是,则用空字符串替换它,然后将其推送到表中。因此,如果我能够以这种方式学习如何做到这一点,那我认为最好吗?
<!doctype html>
@using System;
@using System.Collections.Generic;
@using System.Collections;
@using System.Linq;
@{
var dictionary = new Dictionary<string, object>();
dictionary.Add("fName", returnString100.FRSTNAME.Trim());
@helper printOut(string toBePrinted) {
object curValue;
if(dictionary.TryGetValue(toBePrinted, out curValue)) {
return curValue;
}
}
}
<table>
<tr>
<td>First Name:</td><td>@{ printOut("fName"); }</td>
</tr>
</table>
答案 0 :(得分:1)
虽然在哲学上我同意其他人你可能想把它封装在一个类中,但是你可以在Razor中用以下的方式做到这一点:
<!doctype html>
@using System;
@using System.Collections.Generic;
@using System.Collections;
@using System.Linq;
@{
var dictionary = new Dictionary<string, object>();
dictionary.Add("fName", returnString100.FRSTNAME.Trim());
Func<string, object> PrintOut = delegate(string toBePrinted)
{
object curValue;
if (dictionary.TryGetValue(toBePrinted, out curValue))
return curValue;
return "";
};
}
<table>
<tr>
<td>First Name:</td><td>@PrintOut("fName").ToString()</td>
</tr>
</table>