asp.net-mvc-3 - 下拉列表在 MVC3 Razor 中设置选定值

标签 asp.net-mvc-3 drop-down-menu razor selected

这是我的模型:

public class NewsCategoriesModel {
    public int NewsCategoriesID { get; set; }        
    public string NewsCategoriesName { get; set; }
}

我的 Controller :

public ActionResult NewsEdit(int ID, dms_New dsn) {
    dsn = (from a in dc.dms_News where a.NewsID == ID select a).FirstOrDefault();
    var categories = (from b in dc.dms_NewsCategories select b).ToList();
    var selectedValue = dsn.NewsCategoriesID;
    SelectList ListCategories = new SelectList(categories, "NewsCategoriesID", "NewsCategoriesName",selectedValue);

    // ViewBag.NewsCategoriesID = new SelectList(categories as IEnumerable<dms_NewsCategory>, "NewsCategoriesID", "NewsCategoriesName", dsn.NewsCategoriesID);
    ViewBag.NewsCategoriesID = ListCategories;
    return View(dsn);
}

然后是我的观点:

@Html.DropDownList("NewsCategoriesID", (SelectList)ViewBag.NewsCategoriesID)

当我运行时,DropDownList 不会选择我设置的值。它始终选择第一个选项。

最佳答案

您应该使用 View 模型并忘记 ViewBag 将其视为不存在。你会发现事情会变得多么容易。因此定义一个 View 模型:

public class MyViewModel
{
    public int SelectedCategoryId { get; set; }
    public IEnumerable<SelectListItem> Categories { get; set; } 
}

然后从 Controller 填充此 View 模型:

public ActionResult NewsEdit(int ID, dms_New dsn)
{
    var dsn = (from a in dc.dms_News where a.NewsID == ID select a).FirstOrDefault();
    var categories = (from b in dc.dms_NewsCategories select b).ToList();

    var model = new MyViewModel
    {
        SelectedCategoryId = dsn.NewsCategoriesID,
        Categories = categories.Select(x => new SelectListItem
        {
            Value = x.NewsCategoriesID.ToString(),
            Text = x.NewsCategoriesName
        })
    };
    return View(model);
}

最后在您看来使用强类型 DropDownListFor 帮助器:

@model MyViewModel

@Html.DropDownListFor(
    x => x.SelectedCategoryId,
    Model.Categories
)

关于asp.net-mvc-3 - 下拉列表在 MVC3 Razor 中设置选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6807256/

相关文章:

asp.net - MVC 巨大模型性能不佳

jquery - onmouseout 事件触发得太早

jQuery:在未选择任何选择字段选项时隐藏元素(多个字段)

asp.net-mvc - 如何在 Razor MVC 中为共享布局提供模型?

javascript - 如何在 javaScript 函数中检查 null?

c# - 无法使用 asp.net mvc 3 获得事件模糊

asp.net-mvc-3 - MVC 3 POST 数据和 Id 字段

jquery - 关于在 mvc razor 中使用 Kendo ui 上传的过滤器文件类型

asp.net-mvc - 文件输入MVC 3所需的客户端验证

drop-down-menu - 支持大型下拉菜单的最佳方式