Asp.net mvc 3 “装载”;敲除。映射“;使用require.js的插件

Asp.net mvc 3 “装载”;敲除。映射“;使用require.js的插件,asp.net-mvc-3,requirejs,Asp.net Mvc 3,Requirejs,我正在使用requireJS创建一个MVC3应用程序。在我的视图中,我需要将模型对象转换为剔除视图模型对象。所以我需要使用knockout和knockout.mapping库 我的应用程序设计如下: 1) 。所有脚本文件都分类到文件夹中 Scripts/app/home/-包含主控制器中视图的脚本 Scripts/lib/-包含jQuery、knockout、knockout.mapping、requirejs等脚本 2) 。在“_Layout.cshtml”中,我像这样引用了“requir

我正在使用requireJS创建一个MVC3应用程序。在我的视图中,我需要将模型对象转换为剔除视图模型对象。所以我需要使用knockout和knockout.mapping库

我的应用程序设计如下:

1) 。所有脚本文件都分类到文件夹中

  • Scripts/app/home/-包含主控制器中视图的脚本
  • Scripts/lib/-包含jQuery、knockout、knockout.mapping、requirejs等脚本
2) 。在“_Layout.cshtml”中,我像这样引用了“require.js”

<script src="@Url.Content("~/Scripts/lib/require.js")" type="text/javascript"></script>
4) 。这是我的index.js文件,位于“Scripts/app/home/”中

}))

5) 。这是我在“主”控制器中的“索引”操作方法

public ActionResult Index()
    {
        var person = new Person
        {
            Id = 1,
            Name = "John",
            Addresses = new List<Address>(new[]{new Address{Country = "Country 1", City = "City 1"}})
        };

        return View(person);
    }
public ActionResult Index()
{
var person=新的人
{
Id=1,
Name=“John”,
地址=新列表和

非常感谢您的帮助和建议。谢谢!

我也有同样的问题。问题是knockout.mapping定义了一个knockout依赖项,所以在加载脚本时需要满足这个依赖项

下面是您应该如何加载映射内容

require.config(
{
    baseUrl: "/Scripts/",
    paths:{
        jquery: "lib/jquery-2.0.3",
        knockout: "lib/knockout-2.3.0",
        komapping: "lib/knockout.mapping"
    },
    shim: {
        komapping: {
            deps: ['knockout'],
            exports: 'komapping'
        }
    }
});
然后在我的例子中,我使用一个index.js文件和一个requirejs调用,如下所示

requirejs(['jquery', 'knockout', 'komapping'], function($, ko, komapping){
    ko.mapping = komapping;
    //Do other stuff here
});
.我尝试使用此解决方案,但出现错误。
@model MMS.Web.Models.Person

<script type="text/javascript">

require(["/Scripts/common/common.js"], function () {

            require(["app/home/index"], function (indexJS) {
                var person = new indexJS.Person();
                var vm = person.getPersonViewModel(@Html.Raw(Json.Encode(Model)));
            });
});
</script>
require.config(
{
    baseUrl: "/Scripts/",
    paths:{
        jquery: "lib/jquery-2.0.3",
        knockout: "lib/knockout-2.3.0",
        komapping: "lib/knockout.mapping"
    },
    shim: {
        komapping: {
            deps: ['knockout'],
            exports: 'komapping'
        }
    }
});
requirejs(['jquery', 'knockout', 'komapping'], function($, ko, komapping){
    ko.mapping = komapping;
    //Do other stuff here
});