我是.cshtml的新手。我有.aspx的一些经验,并有以下问题。
我的数据库中的用户具有排名。我想在页面中显示指向评分最高的用户的链接。
在aspx中,我会对代码隐藏进行回发,并且得到排名最高的用户。
我听说在cshtml中你可以在加载页面之前计算出来,而且效率更高。另外,为什么{}?
中有一些代码我认为这是C#代码,但是visual studio强调它是红色的,就像它是一个错误。
答案 0 :(得分:1)
如果您刚开始使用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)时,你放在@ {//这是代码}里面的是在加载页面之前执行的C#代码。您可能对VS存在智能问题,这就是为什么它无法识别代码。
所以当你写:
<a href="@GetHighestRatedUrl()"> click to see highest rated user </a>
将执行扩展方法代码,您将在加载页面之前获取ID(您可以在此处添加所需的任何逻辑)。
请记住,如果此代码执行时间过长,页面将花费大量时间加载(尝试保持简单)。