我很难理解如何动态地为属性分配值,这意味着在运行时,以便我可以在剃刀页面中检索/显示值。我具有以下编程逻辑来完成任务,但是,此(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类中,还有其他属性,我希望它们在保存在数据库中时显示出来。
“我的剃刀”页面不显示内容,因为它为空:
<div>
<markdown markdown="@Model.LimitedWords">
</div>
谢谢!
答案 0 :(得分:0)
根据您所发布的内容,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);
}