gpt4 book ai didi

asp.net-mvc - Html.ListBox() 和 MultiselectList

转载 作者:行者123 更新时间:2023-12-04 20:05:26 25 4
gpt4 key购买 nike

我对 Html.ListBox 有点问题。

我正在使用 ASP.NET MVC 1.0 开发个人博客,我创建了一个 adminpanel,我可以在其中添加和编辑帖子!在这两个操作中,我还可以添加标签。

我想使用 Html.ListBox() 帮助器来列出所有标签,这样我就可以选择多个标签添加到帖子中!问题不在添加模式,而是在编辑模式,我必须预先选择帖子的标签。

我读到我必须使用 MultiSelectList,所以在它的构造函数传递中,标签列表和标签列表(预选值)。

但是我不知道怎么用这个类。

我发布一些代码:

这是我的模型方法,它获取 selectlist 中的所有列表标签

public IEnumerable<SelectListItem> GetTagsListBox()
{
return from t in db.Tags
orderby t.IDTag descending
select new SelectListItem {
Text = t.TagName,
Value = t.IDTag.ToString(),
};
}

因此,在编辑(获取和发布)、添加(获取和发布)中,我使用 ViewData 在 Html.ListBox() 中传递此列表。

ViewData["Tags"] = tagdb.GetTagsListBox();

在我看来

<%=Html.ListBox("Tags",ViewData["Tags"] as SelectList) %>

所以使用这段代码,在添加模式下就可以了。

但在编辑模式下我需要预先选择这些值。

所以现在,我当然必须创建一个方法来获取所有 tagsbypostid。

然后在 ViewData 中我必须传递什么?

有什么建议吗?

最佳答案

我认为您可以执行以下操作:

public IEnumerable<SelectListItem> GetTagsListBoxWithPostTagsSelected(int postID)
{
// Assuming you need to create this function and that Tag.IDTag is an int
var postTags = GetAllTagsByPostID(postID);

return from t in db.Tags
orderby t.IDTag descending
select new SelectListItem {
Text = t.TagName,
Value = t.IDTag.ToString(),
Selected = postTags.Exists(pt => pt.IDTag == t.IDTag)
};
}

这应该会返回正确的列表,其中包含所选帖子的值。

您需要创建 GetAllTagsByPostID(postID) 并使用一个新方法来接收 PostID 以确保正确选择标签。

无需更改即可:

<%=Html.ListBox("Tags", ViewData["Tags"] as SelectList) %>

ViewData["Tags"] 现在应该包含选择您的 ListBox 项目所需的信息。

关于asp.net-mvc - Html.ListBox() 和 MultiselectList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com