【问题标题】:Dynamically assign value to a Property动态地为属性赋值
【发布时间】:2019-06-26 18:33:46
【问题描述】:

我很难理解动态地为属性分配值,这意味着在运行时,我可以在剃须刀页面中检索/显示值。我有以下编程逻辑来完成我的任务,但是这个 (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 帮助器方法按预期返回值,并且在调试期间它确实显示局部变量“limitContent”具有该值,但它以某种方式未将其分配给 LimitedWords 属性,该属性是 Post 类中的一个属性。

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

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

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

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-web-api markdown razor-pages


    【解决方案1】:

    根据您发布的内容,result 包含存储库返回的帖子。

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

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

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

    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);
    }    
    

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2011-03-02
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 2013-04-15
      • 2017-04-20
      • 2013-08-03
      • 2021-03-04
      相关资源
      最近更新 更多