1

サイト上のすべてのテキストを管理ページから編集できる Web サイトを作成しています。問題は、正しい投稿をビューに送信する方法がわからないことです。

たとえば、「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 は、投稿を識別するための最良の方法です。正確な設定については不明ですが、同じタイトルの複数の投稿を作成できる可能性があります

投稿を正確に反映するビューモデルを作成し、ビューに渡す前にリポジトリからこれを設定する必要があります。

于 2013-11-13T11:44:52.490 に答える
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 に答える