私はasp.net mvcを初めて使用し、単純なWebサイトを作成しようとしています. 多対多の関係を持つタグの投稿があります。msdn oh how to do多対多のチュートリアルを読みましたが、理解していません。私がやりたいことは、新しい投稿を作成するときに、この Web サイト (stackoverflow) で投稿を作成する方法とまったく同じように、投稿にキーワードをタグ付けする機能を持っていることだけです。タグテキストボックスでjqueryの自動選択を行い、アイテムが作成されると、テーブルの結合で適切なエントリが作成されます。
だから私の質問は:
- タグテキストフィールドに jquery オートコンプリートを設定する方法
- 選択したタグを使用して新しい投稿を作成する方法 (結合テーブル内)
チェックボックスからタグを選択する多対多の作成の例をいくつか見てきましたが、選択するタグが数百あるため、この状況では実用的ではありません。
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content {get; set;}
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public int TagId { get; set; }
public int Title { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public class PostEntities : DbContext
{
public DbSet<Post> Posts { get; set; }
public DbSet<Tag> Tags { get; set; }
}
そして作成コントローラー(自動生成):
[HttpPost]
public ActionResult Create(Post post)
{
if (ModelState.IsValid)
{
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
かみそり:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Post</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Content)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Content)
@Html.ValidationMessageFor(model => model.Content)
</div>
<div>
<h3>Tags</h3>
@Html.TextBoxFor(model => model.Tags, new { @id = "NewTags" })
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}