C# 使用单选按钮获取所选类别

C# 使用单选按钮获取所选类别,c#,asp.net-mvc,selecteditem,radiobuttonlist,C#,Asp.net Mvc,Selecteditem,Radiobuttonlist,我有一个问题,我不确定我是否使用了正确的逻辑 我试图实现的是为数据库中的每个类别创建一个radionbuttonlist(Categories)。当用户选择radionbutton时,应使用categoryID适当更新图书列表 i、 e.从我的分类表中,我得到了渲染,科幻和浪漫,当用户选择一个分类时,图书列表只显示具有匹配分类ID的图书 我的ViewModel存储了两个“列表”,我可以在视图中迭代它们 视图模型: public class SortBookVM { public IEnu

我有一个问题,我不确定我是否使用了正确的逻辑

我试图实现的是为数据库中的每个类别创建一个radionbuttonlist(Categories)。当用户选择radionbutton时,应使用categoryID适当更新图书列表

i、 e.从我的分类表中,我得到了渲染,科幻和浪漫,当用户选择一个分类时,图书列表只显示具有匹配分类ID的图书

我的ViewModel存储了两个“列表”,我可以在视图中迭代它们

视图模型:

public class SortBookVM
{
    public IEnumerable<Book> BookList { get; set; }
    public IEnumerable<Category> CategoryList { get; set; }
}
公共类SortBookVM
{
公共IEnumerable书目{get;set;}
公共IEnumerable类别列表{get;set;}
}
在控制器中,我想在列表中添加逻辑

这是否正确?如果正确,我如何在这里实现它?或者逻辑应该在其他地方吗?

控制器:

public ActionResult GetBook(int? groupID)
{
    HowEntities db = new HowEntities();
    SortBookVM sbVM = new SortBookVM();

    sbVM.ClassList = db.Book.ToList<Book>();
    sbVM.CardList = db.Category.ToList<Category>();

    //Book b = new Book();
    //var query = from x in db.Book where c.CategorypID == groupID select x;

    return View(sbVM );
}
public ActionResult GetBook(int?groupID)
{
HowEntities db=新的HowEntities();
SortBookVM sbVM=新的SortBookVM();
sbVM.ClassList=db.Book.ToList();
sbVM.CardList=db.Category.ToList();
//书b=新书();
//var query=来自db.Book中的x,其中c.CategorypID==groupID选择x;
返回视图(sbVM);
}
在这里,我循环浏览“列表”以获取所有数据

视图:

@foreach(Model.CategoryList中的变量v)
{
@DisplayFor(x=>v.CategoryName)
@RadioButton(x=>v.ID,true)
}
@foreach(Model.BookList中的var项)
{
  • @DisplayFor(x=>item.Name)
  • }
    所以我要问的是我的逻辑,如何实现这一正确,如果是,我如何从这里开始?还是有更好的方法


    提前感谢。

    您的控制器目前似乎没有多少逻辑。您只需实例化
    sbVM
    视图模型并将其传递给视图。您似乎正在使用一些
    svHm
    变量,这些变量不清楚它来自何处,也不清楚以后会发生什么。但是您从未在传递给视图的视图模型上设置2个列表属性。所以你的观点很可能会崩溃。有很多方法可以做到这一点。我会使用一些jquery,在单选按钮select上触发一个事件。然后使图书列表成为一个子视图,该视图接受类别输入并显示正确的图书。你需要有一些单选按钮的侦听器。sry svHm是sbVM ofc,我这边的打字错误。。是的,从逻辑上讲,我的意思是这是一个合适的架构,或者叫它什么。是的,当我在genrel中使用mvc时,我想使用某种jquery。。但这正是我所困惑的听众?如何让它们回复到控制器中的som逻辑?
    @foreach (var v in Model.CategoryList)
    {
        @Html.DisplayFor(x => v.CategoryName)
        @Html.RadioButtonFor(x => v.ID, true)
    }
    @foreach (var item in Model.BookList)
    {
        <li>
             @Html.DisplayFor(x => item.Name)
        </li>
    }