【问题标题】:.Net MVC 4 View Engine WebForm.Net MVC 4 查看引擎 WebForm
【发布时间】:2011-10-18 08:00:23
【问题描述】:

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

问题: 我有一个包含汽车列表的视图,因此类型为IList <Car>。 我有一个按钮“创建一辆新车”弹出,弹出是一个隐藏的表单,你调用一个jQuery UI命令$('formName').dialog()来弹出它,这个表单具有可能是新车,所以可能是带有强类型Car 的新视图。填写表格后,数据库中应该会填充新车,并且应该使用 Ajax 刷新汽车列表。 主要问题是我不能同时对IList <Car> 和Car 使用HTML Helpers。

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

最好的问候,

蒂托·莫赖斯

【问题讨论】:

  • 我不知道你的问题是什么。但是在 Razor 中没有什么是您在 WebForms 中不能做的。我自己更喜欢 Razor,但改变不会解决你的“问题”。
  • 除非您在此处发布代码示例,否则没有人会提供可靠的答案。我有点理解你需要什么,但这可能是错误的,所以请发布代码。

标签: asp.net-mvc webforms razor viewengine


【解决方案1】:

不要将列出汽车和创建新车的视图混在一起。

例如,您可以使用 jQuery 对话框或类似组件制作一个动态加载“_CreateCar”局部视图的弹出窗口。然后当部分视图完成后,使用另一个 Ajax 调用重新加载列表视图。

【讨论】:

    【解决方案2】:

    也许不是一个优雅的解决方案是创建一个复杂的视图模型,例如:

    class ListAndCreate
    {
     public IList<Car> AllCars {get;set;}
     public Car NewCar {get;set;}
    }
    

    IMO 这是正确,因为一个视图负责列出所有汽车并创建新汽车。现在,我假设您的 NewCar 具有来自您的控制器或其他东西的值,您需要将模型传递给您的视图。

    @Jonas 提到的另一种方法也是正确且更加统一的。您可以创建一个带有 Car 类型的局部视图 _CreateCar,使用 Jquery/Ajax 渲染它以将其加载到对话框/弹出窗口中,并将表单 POST 到控制器中的 Create(Car c) 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多