在我看来,这是一个非常有趣的问题。 我有一个使用WebForm视图引擎的强类型视图,我不知道更改为razor是否可以解决我的问题。
问题:
我有一个包含汽车列表的视图,类型为IList <Car>
。
我有一个按钮“创建新车”弹出窗口,弹出窗口是一个隐藏的窗体,你调用jQuery UI命令$('formName').dialog()
来弹出它,这个窗体有属性可能的新车,所以可能是一个强类型Car
的新视图。填写表格后,应使用新车填充数据库,并使用Ajax刷新汽车列表。
主要问题是我不能同时使用HTML帮助程序IList <Car>
和Car
。
简要地说: 该视图的强类型是什么?是否可以使用弹出窗口定义两个视图而另一个调用?将它改为Razor可以解决我的问题吗?
致以最诚挚的问候,
Tito Morais
答案 0 :(得分:1)
不要混淆视图以列出汽车并一起创建新车。
例如,您可以使用jQuery对话框或类似组件创建一个动态加载“_CreateCar”局部视图的弹出窗口。然后,当部分视图完成时,使用另一个Ajax调用重新加载列表视图。
答案 1 :(得分:1)
也许没有那么优雅的解决方案是创建一个复杂的视图模型,如:
class ListAndCreate
{
public IList<Car> AllCars {get;set;}
public Car NewCar {get;set;}
}
IMO这是正确的,因为一个视图负责列出所有汽车并创建一个新汽车。现在,我假设您的NewCar
值来自您的控制器或其他东西,您需要将模型传递给您的视图。
@Jonas提到的另一种方法也是正确的,更加统一。您可以使用类型_CreateCar
创建部分视图Car
,使用Jquery / Ajax渲染它以将其加载到对话框/弹出窗口中,并将窗体POST发送到控制器中的Create(Car c)
方法。