我正在尝试在 MVC 4 中创建一个“新建”页面。该页面将包含文本字段和下拉字段。我希望下拉框中列出的项目来自另一个模型。
主模型:(忽略语法,以下代码是通用示例)
public int MainID {get; set;}
public int location {get; set;}
...
一些细节模型:
public int detailID {get; set;}
public int MainID {get; set;}
...
public int actionID {get; set;}
行动模式:
public int actionID {get; set;}
public int location {get; set;}
public string action {get; set;}
SomeDetails携带有关的附加信息,Main并通过使用链接mainID。我有兴趣为someDetails. 此页面的一部分将包含一个下拉菜单,Action该下拉菜单基于 中的location字段main。
实现下拉框的最佳方法是什么?我有一个涉及在 ViewBag 中传递可能值的解决方案,但我已经看到了这种标记为不好的做法。我也在想有可能public int actionID {get; set;}改成<List>Action. 如果执行此方法,我想我会有用于someDetails填充列表的构造函数?someDetails由于它每次都会尝试创建列表,因此在仅查看特定内容时会导致性能问题吗?
创建动作:
 public ActionResult Create(int id = -1)
    {
        if (id == -1)
        {
            //NOTE: INSERT REDIRECT HERE
        }
        someDetails model = new someDetails();
        model.MainID = id;
        return View(model);
    }
编辑:根据要求,更好地解释业务逻辑main model我所展示的模型是在一个我无法更改的现有表之后建模的,因为它是位于我的控制/组之外的数据仓库的一部分。我正在创建一个允许用户添加的应用程序,someDetails以便更好地了解/跟踪其中一些数据。该Action模型仅根据位置显示可能的操作/操作ID。
我的应用程序将允许用户从模型中搜索或过滤一组项目main。然后他们将被允许添加someDetails这将打开一个表单,其中将包含一些文本字段和一个下拉列表以选择一个操作。为了获得可能的值action,我会做类似的事情SELECT * FROM Action a WHERE a.location = currentLocation