.net - c# -读取数据库而不做回发

本文关键字:数据库 读取 net | 更新日期: 2023-09-27 18:12:54

我是新的。cshtml。我有一些使用。aspx的经验,有以下问题:

我在数据库中有一个用户排名。我想在页面上显示一个链接到评价最高的用户。

在aspx中,我将有一个回发到代码后端,并在那里获得排名最高的用户。

我听说在cshtml中,你可以在加载页面之前计算这个,它更有效。还有,为什么有些代码在{}中?

我以为这是c#代码,但是visual studio给它加了红色下划线,就像这是一个错误。

.net - c# -读取数据库而不做回发

如果你刚开始使用Razor,我建议你阅读http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-(c)

我不知道你想做什么,但是这样做的一个好方法是使用扩展方法。你可以添加一个类HtmlHelperExtensions.cs,它包含:

public static IHtmlString GetHighestRatedUrl(this HtmlHelper html)
{
    int id = SomehowGetYourIdFromDatabase();
    string url = "http://www.yourpage.com/User/" + id;
    return MvcHtmlString.Create(url);
}

当使用Razor语法(cshtml)时,你在@{//This is code}中放入的是在加载页面之前执行的c#代码。你可能在VS上有一个智能感知问题,这就是为什么它不能识别代码。

所以当你写:

<a href="@GetHighestRatedUrl()"> click to see highest rated user </a>

扩展方法代码将被执行,您将在加载页面之前获得ID(您可以在这里添加任何您需要的逻辑)。

请记住,如果这段代码需要很长时间来执行,那么页面将需要很多时间来加载(尽量保持简单)。