我是 asp.net mvc 的新手,正在尝试创建一个简单的网站。有一个带有标签的帖子具有多对多关系。我已经阅读了msdn上的教程哦,如何做多对多,但我不明白。我想要做的就是在创建新帖子时,能够使用关键字标记帖子,就像在此网站上创建帖子的工作方式(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>
}