C# 如何从razor中正确调用方法?

C# 如何从razor中正确调用方法?,c#,asp.net,C#,Asp.net,所以基本上我想知道如何调用方法或在razor文件中修改代码 我在互联网上见过一些包含静态类的方法,但我认为这不是最好的方法 我在cshtml文件中获得了以下代码: @DisplayFor(modelItem=>item.Description) 显示“News”类(在模型中)中的所有行的 我只想显示描述的前50个字母和后面的3个点,我的问题是我应该在哪里写这个方法?在“新闻”课上?还是在另一个外部类中?我如何在razor文件中访问它?更新以反映@mjwills的建议 您可以将该方法定义(编写

所以基本上我想知道如何调用方法或在razor文件中修改代码

我在互联网上见过一些包含静态类的方法,但我认为这不是最好的方法

我在cshtml文件中获得了以下代码:


@DisplayFor(modelItem=>item.Description)
显示“News”类(在模型中)中的所有行的

我只想显示描述的前50个字母和后面的3个点,我的问题是我应该在哪里写这个方法?在“新闻”课上?还是在另一个外部类中?我如何在razor文件中访问它?

更新以反映@mjwills的建议

您可以将该方法定义(编写)为新闻模型类的成员方法

public class NewsModel
{
    //all your properties here
    public string Description { get; set; }
    public string DescriptionWithDots { get { return DoTheDots(Description); } }

    //the method that writes the dots
    public string DoTheDots(string input)
    {
        return input + "some dots ...";
    }
}
然后在要调用它的视图中,不要使用Displayfor()并按如下方式调用它:

 <td>
    @item(item.DescriptionWithDots)
 </td>

一般来说,不在视图中进行任何转换,而是在控制器操作方法(例如)中进行转换,并将结果保存在视图模型中,这是比较可取的做法。然后可以将其传递给只需要渲染的视图。@ath非常感谢您的回答!但是它可以为遍历所有项的foreach完成。Description?要清楚,在示例中,我们只看到一个模型(具有Description属性),对吗?通过刚才的评论,似乎您想循环一个
集合
(多个描述)并在一个视图中呈现它们,对吗?@ath是的,这是完整的代码:foreach(模型中的var项){…},在3个点中,我使用Html.DisplayFor(modelItem=>item.Description)考虑将“代码”>描述符以DOS/<代码>作为只读属性,然后使用<代码> @ HTML。DisplayFor(MultIdjt= > item。这将保留模型中的所有复杂性,而不是视图。谢谢!真的吗helped@mjwills美好的您的意思是使用构造函数调用方法并将结果存储在只读属性中吗?@mjwills谢谢mate,这是一个更干净的解决方案。我更新了答案
foreach (var item in models)
        {
            item.Description = item.DoTheDots(item.Description);
        }
        return View(models);