我正在创建一个网站,其中网站上的所有文字都可以从管理页面进行编辑。 问题是我不知道如何将正确的帖子发送到视图。
例如,我想将“欢迎帖子”传递给主视图,如何从模型数据中选择此特定帖子?我已经看到我可以通过他们的ID找到帖子,db.Posts.Find(1)
,这是一个好主意还是我应该更具体并使用字符串?
与SQL相比,它看起来像:
"SELECT * FROM test WHERE title='welcome'"
是否有任何类似的方法可以在不使用主键的情况下查找特定的模型数据?一个简单的IF循环就足够了吗?
Ex, If(Post.Title == "Welcome"){...}
答案 0 :(得分:0)
ID是识别帖子的最佳方式。不确定您的确切设置,但您可能能够拥有相同标题的muiple帖子
您应该创建一个准确反映Post的视图模型,并在传递给视图之前从您的存储库中填充它。
答案 1 :(得分:0)
模型数据应仅包含视图所需的详细信息。您的控制器将事先填充该模型。问题听起来与查询数据以填充模型更相关。如果我误解了,请纠正我。
ID是识别您的帖子的最有效方式,但在您可以访问单个帖子之前,您可能需要识别相关帖子以获取ID。在这种情况下,我建议扩展您的实体以包括一个类别。
根据您的查询结果,可以选择结果ID并查询该
的完整详细信息SQL看起来像
Select ID, Title FROM Test t WHERE c.CategoryName = 'Welcome'
INNER JOIN Categories c ON c.CategoryId=t.CategoryId
LINQ可能类似于
var welcomePosts = db.Posts.Where(post=>post.CategoryName=="Welcome")
.Select(post=>new{Title, Id});
在现实世界中,您可能会有一个存储库接受谓词或其他一些通用的选择方法
public abstract IEnumerable<Post> GetPosts(Func<Post, bool> predicate)
这样做可以为您的类别编制索引。上述查询可能会导致多个帖子返回该类别,然后每个帖子旁边的编辑按钮可以导致使用ID撤回详细信息?