1

我正在制作一个网站,该网站上的所有文本都可以从管理页面进行编辑。问题是我不知道如何将正确的帖子发送到视图。

例如,我想将“Welcome-post”传递到主视图,如何从模型数据中选择这个特定的帖子?我已经看到我可以通过他们的 ID 找到帖子db.Posts.Find(1),这是一个好主意还是我应该更具体并使用字符串?

与 SQL 相比,它可能看起来像:

"SELECT * FROM test WHERE title='welcome'"

有没有类似的方法可以在不使用主键的情况下找到特定的模型数据?一个简单的 IF 循环就足够了吗?

Ex, If(Post.Title == "Welcome"){...}
4

2 回答 2

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 拉回细节?

于 2013-11-13T12:18:23.593 回答
0

ID 将是识别帖子的最佳方式。不确定您的确切设置,但您很可能拥有多个具有相同标题的帖子

您应该创建一个准确反映您的帖子的视图模型,并在传递给视图之前从您的存储库中填充它。

于 2013-11-13T11:44:52.490 回答