.Net MVC 4 View Engine WebForm

时间:2011-10-18 08:00:24

标签: asp.net-mvc webforms razor viewengine

在我看来,这是一个非常有趣的问题。 我有一个使用WebForm视图引擎的强类型视图,我不知道更改为razor是否可以解决我的问题。

问题: 我有一个包含汽车列表的视图,类型为IList <Car>。 我有一个按钮“创建新车”弹出窗口,弹出窗口是一个隐藏的窗体,你调用jQuery UI命令$('formName').dialog()来弹出它,这个窗体有属性可能的新车,所以可能是一个强类型Car的新视图。填写表格后,应使用新车填充数据库,并使用Ajax刷新汽车列表。 主要问题是我不能同时使用HTML帮助程序IList <Car>Car

简要地说: 该视图的强类型是什么?是否可以使用弹出窗口定义两个视图而另一个调用?将它改为Razor可以解决我的问题吗?

致以最诚挚的问候,

Tito Morais

2 个答案:

答案 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)方法。