1

我一直在做 asp.net mvc 一段时间,最近遇到了这个 techdays 教程

这似乎很有趣,但让我对如何开始做类似的事情感到困惑。

目前我有一个使用

1.  Jquery
2.  Asp.net mvc 3 razor
3.  Nhibernate 

我的应用程序基本上是一个带有几个选项卡的页面,一切都由 ajax 和 jquery 模型对话框控制。

我按照这个图案来做我的东西

视图 -> 视图模型 -> 控制器 -> 服务层(在单独的库中)-> nhibernate

[HttpGet]
public ActionResult Courses()
{
    // get all courses back from service layer
    // automap domain results to view model
    return View(vm);
}

[HttpPost]
public ActionResult CreateCourse(CourseFormViewModel vm)
{
   // check if data meets basic validation
    if (ModelState.IsValid)
    {
       //map back to domain object
        // send to service layer
        // return data back view through json.

        return Json(data);

    }
    // return errors back to server
    return Json(wrapper);
}

// 我的视图模型包含基本验证

   public class CourseFormViewModel
    {
        public int CourseId { get; set; }

        [Required(ErrorMessage = "Course name is required")]
        [StringLength(40, ErrorMessage = "Course name cannot be this long.")]
        public string CourseName { get; set; }
    }

// 看法

我的视图几乎有一些使用视图模型的强类型 html 帮助。

// Javascript

正如我提到的,我使用了很多 Ajax。大多数时候,我会使用 serliazeArray,然后将数据发布到控制器 Action Result(CreateCourse),然后再绑定视图模型的值。

// 服务层

在我的服务层中,我将执行一些业务逻辑,然后在需要时使用 nhibernate 保存到数据库中。如果我觉得有必要,我将制作域传输对象,否则我将只使用我的域对象。

我最近一直在研究 jquery 手机和手机的差距,因为我被安排在一个使用这种技术的项目上,它们看起来非常有用。由于我对 asp.net mvc 非常熟悉,因此我开始考虑是否可以在混合中使用 mvc,那时我看到了我在这篇文章顶部发布的视频。

我仍然不是 100% 在单页应用程序上销售,例如,如果我要查看我正在制作的当前个人项目并想要制作它的移动版本,那么应用程序在向其展示数据时必须完全不同用户。

例如,我的 Web 应用程序有一个表格,它只需要大量空间来显示所有内容,而且在移动设备上可能看起来不太好。这将导致我要么不得不修剪表格,要么考虑以不同的方式显示它(我可能会这样做)。

我喜欢史蒂夫所做的可以在所有移动设备上运行的事实,我想尝试类似于他正在做的事情,但我要制作的版本将只适用于移动设备,也许是小型平板电脑。

我认为可以支持 1024 和更高分辨率的所有其他东西都应该使用当前的 Web 应用程序。

我只是不知道从哪里开始以及如何使它适合我正在使用的东西。

  1. 他正在使用 webapi 和实体框架工作,但我如何使用 nhibernate 进行这项工作?

  2. 我不再使用视图模型了吗?似乎他只是连接了他的域模型并将其全部发送到视图。我对此并不太疯狂,因为我喜欢视图模型。

  3. 他使用 Knockout.js 及其所有绑定内容,例如绑定到他用来将数据发送回服务器的按钮。这很好,但是当您使用 jquery 对话框和生成自己的按钮的东西时会发生什么。在这些情况下,你如何挂钩淘汰赛?

  4. 他提到,然后他可以接受他的项目并使用诸如phonegap之类的东西将其投放市场。如果他使用 asp.net mvc 代码作为电话间隙仅支持 html/javascript/css,他怎么能做到这一点?

4

1 回答 1

0

关于第 3 点。我正在使用带有 jqQuery 对话框的 Knockout 没有任何问题。首先,您不能将数据绑定附加到对话框创建的按钮。我不确定你真的需要。对话框按钮充当单击事件处理程序。在这些处理程序中,您可以对绑定的视图模型执行您需要的所有操作。


编辑 我在http://jsfiddle.net/ex5Qy/3/上放了一个演示

要记住的一件事是 Knockout 的设计目的。它将视图模型绑定到 html 元素。就这样。您仍然需要所有其余的正常逻辑来使页面执行您需要的操作。

于 2012-06-02T12:45:06.977 回答