我正在尝试在 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