为 属性 动态赋值

Dynamically assign value to a Property

我很难理解动态地为 属性 赋值,这意味着在 运行 时间内,我可以 retrieve/display 在剃刀页面中赋值。我有以下编程逻辑来完成我的任务,但是这个 (LmitedWords) 属性 不会呈现或保留任何要显示的值。如何在 运行 时间内为此 属性 赋值。

public class Post 
{

   public string Content { get; set; }
   [NotMapped]
   public string LimitedWords { get; set; } 

 }

我的控制器代码如下:-

 public async Task<IActionResult> GetAllPosts()
        {
            var myLimitProperty = new Post();
            var result = await _repository.GetAllPosts();

            foreach (var post in result)
            {
                var limitContent = ContentExtension.ReturnLimitedDescription(post.Content, size);               
                myLimitProperty.LimitedWords = limitContent; 

            }
            return View(result);
        }    

我的 contentextension 辅助方法 returns 值符合预期,并且在调试期间它确实显示局部变量 "limitContent" 具有该值,但它以某种方式没有将其分配给 LimitedWords 属性,这是 Post class 中的 属性。

在我的 Post class 中还有其他属性,我希望它们在保存在数据库中时显示。

我的 Razor 页面不显示内容,因为它是空的:

<div>
 <markdown markdown="@Model.LimitedWords">                    
</div>

谢谢!

好吧,根据您发布的内容,result 包含存储库 return 编辑的帖子。

您循环浏览这些帖子,更新操作中的 myLimitProperty 局部变量和 return 原始集合。

发送到视图的对象实际上没有任何更新

从列表中创建投影,填充应在视图中显示的所需属性。

public async Task<IActionResult> GetAllPosts() {
    var posts = await _repository.GetAllPosts();

    var result = posts.Select(post => {
        var limitContent = ContentExtension.ReturnLimitedDescription(post.Content, size);
        var model = new Post() {
            Content = post.Content;
            LimitedWords = limitContent; 
        };
        return model;
    }).ToList();

    return View(result);
}