我正在学习ASP.NET MVC来创建Web应用程序。
我有2个模型: fooA 和 fooB (具有 fooA 类型的属性)。 控制器和视图自动生成。
现在,我想在 fooB 的创建视图中进行一些更改:
我希望我能很好地解释。
我的问题从问题开始:我应该在View或Controller“方面”进行此更改吗?那怎么办呢?
谢谢。
答案 0 :(得分:0)
根据您的描述,我认为这就是您想要的。当用户导航到包含fooB
的视图时,如果有数据,则显示drop-down list
。如果没有,请尝试为drop-down list
创建数据。这是我的建议。
fooB
的视图时,只需显示drop-down list
(即使它为空),然后在其旁边显示一个名为Add
(或任何您想要的)的按钮Add
时,会出现一个弹出窗口,其中包含用于冻结drop-down list
数据的必要字段。Create
时,只需对服务器进行Ajax
调用即可创建数据。然后,显示成功或失败消息,并在需要时刷新drop-down list
以获取新数据。通过这种方式,您不必在页面之间前后重定向,也可以尝试通过重定向过程维护数据。
我希望你明白我的意思。如果您发现任何不清楚的地方,请随时留下问题。
答案 1 :(得分:0)
因此,如果您知道页面加载后是否有 fooA 条目且不会更改,那么您可以简单地使用 Razor if
语句在你的cshtml文件中:
@if (fooA != null)
{
...code with dropdown...
}
else
{
...code with button...
}
这是你在找什么?
答案 2 :(得分:0)
看到一些评论,以及" fooA"必须在单独的视图中创建。实际上,这将需要视图和控制器更改,但您需要的大部分操作都将在控制器操作中。
这有很多选择,但我这就是我要采取的路线(所以要带上一粒盐):
MyController.CreateFooB
操作,这是您在不需要创建fooA时创建fooB模型的标准[HttpPost]
操作MyController.CreateFooBAndRedirectToFooA
,这也是[HttpPost]
MyController.CreateFooA
[HttpGet]
操作,并将FooB
模型的ID传递给操作(这样您就可以执行重定向回来MyController.CreateFooA
提交[HttpPost]
后,创建模型A并执行另一个重定向到MyController.EditFooB
,以便用户可以绑定新的FooA到FooB 如何实施EditFooB
非常取决于您(传递A&#39的ID并将其放入更新表单,强制用户从下拉列表中选择它等)。但最终使用您描述的工作流程,您需要执行发布以创建B - > 重定向到创建 - > 发布以创建 - > 重定向到更新B