【问题标题】:Single Controller an View for multiple Models单个控制器和多个模型的视图
【发布时间】:2016-02-05 20:16:15
【问题描述】:

我是 MVC 和 EF 的新手,但我有一组模型代表所有具有相同结构的查找表

public int ID {get; set;}
public string Value {get; set;}
public bool IsActive {get; set;}

除了为每个控制器和视图编写一个控制器和视图之外,还有一种方法可以创建一个,由先前选择的值定义。

因此,如果我的 2 个查找是 Gender 和 Status 以及包含这些值的下拉列表 然后我可以取所选选项的名称,然后动态绑定到模型

所以不是让 Status status = new Status 它的 Object object = new Object 对象已通过在上一个下拉列表中选择 Status 来定义

【问题讨论】:

    标签: c# entity-framework model-view-controller dynamic


    【解决方案1】:

    这绝对是可能的。有几种方法可以实现这一目标。您可以拥有一个 EditorTemplate,其中包含显示下拉列表所需的一切。在 ~/Views/Shared/EditorTemplates/DropDown.cshtml

    @model string
    @{
        Layout = null;
        List<SelectListItem> ListItems = (List<SelectListItem>)ViewBag.ListItems;
    }
    // not sure what the syntax for a dropdown is, I don't use them
    @Html.SelectFor(m => Model, ListItems)
    

    那么在你看来

    @Html.EditorFor(m => m.Status, "DropDown", new { ListItems = MyModel.StatusSelectListItems })
    @Html.EditorFor(m => m.Gender, "DropDown", new { ListItems = MyModel.GenderSelectListItems })
    

    在您的模型中,您将有选择选项:

    public class MyModel
    {
        // other stuff
        public static List<SelectListItem> GenderSelectListItems = new List<SelectListItem> 
        { 
            new SelectListItem{ Value = "Male", Text = "Male" },
            new SelectListItem{ Value = "Female", Text = "Female" }
        };
        // etc
    }
    

    【讨论】:

    • 如果我有一个外观表并想从表中定义的项目构建初始下拉列表怎么办。这样,如果我添加另一个相同结构的查找表,我可以添加到主表中,而无需重新构建或添加更多代码
    • 那很好。初始化模型时,您可以从表中构建选择列表项。或者您可以在显示时调用一个函数来构建它。
    • 感谢您的指导
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2019-03-29
    • 2021-11-14
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多