使用Razor语法在ASP.NET中使用C#创建方法

时间:2014-07-21 14:26:49

标签: c# asp.net razor

问题已解决:我找到了一个可重复使用的解决方案。谢谢大家的帮助。

我很沮丧,也不知道我在做什么。我试图建立一个网页,而我尝试做的其中一件事就是减少了代码。为了做到这一点,我需要创建一个方法,我对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>

1 个答案:

答案 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>