小编CKE*_*CKE的帖子

控制器参数不会变为空

我遇到了以下问题:

我有一个asp.net mvc 5控制器,引用类型作为参数:

    [Route("")]
    [HttpGet]
    public ActionResult GetFeeds(Location location)
    {
        if (location == null)
        {
            // init location or smth
        }

        // Do smth with location

        return new EmptyResult();
   }
Run Code Online (Sandbox Code Playgroud)

您会注意到我正在使用AttributeRouting.没有其他方法具有此操作的名称.

但是 - 这是我的位置类:

    public class Location : ILocation
    {
       public DbGeography Coordinates { get; set; }

       public double Latitude { get; set; }

       public double Longitude { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这里没什么特别的(界面定义了所有这些属性).

如果我正在访问控制器操作(实际上使用powershell)并传递类似于:

http://localhost:2000/Feed?latitude=23.1&longitude=37
Run Code Online (Sandbox Code Playgroud)

everthing工作正常,但如果我正在使用

http://localhost:2000/Feed
Run Code Online (Sandbox Code Playgroud)

location参数是非null(它是一个具有默认值的新位置),这是我想要的行为:(.

有谁知道为什么会这样?

提前致谢

c# asp.net-mvc controller

9
推荐指数
1
解决办法
3314
查看次数

ko.mapping.toJSON()方法的Knockout mappingOptions

问题

我正在尝试将修改后的viewModel发送回我的服务器.不幸的是,我必须使用ko.mapping.fromJSON()和一些mappingOptions 创建我的viewModel,它工作正常.现在我需要一种简单的方法将创建的viewModel转换回原始方案.

期望的结果

我想转换这个:

var myModel = {
    simpleProp: "test",
    complexProp: {
        simpleProp2: "test2",
        simpleProp3: "test3"
    }
};
Run Code Online (Sandbox Code Playgroud)

进入(JS):

var myModel = {
    simpleProp: "test",
    modifiedToSimpleProWithNewName: "test2"
};
Run Code Online (Sandbox Code Playgroud)

给我这个JSON:

{"simpleProp":"test","modifiedToSimplePropWithNewName": "test2"}
Run Code Online (Sandbox Code Playgroud)

尝试

我在想,因为ko.mapping.toJSON有一个映射参数,就像为这个方法创建另一个映射一样简单.但似乎ko.mapping实际上忽略了我的自定义属性创建:

var mappingOptions = {

    // ignored
    'simpleProp': {
        create: function (thing) {
            return "Changed simpleProps value";
        }
    },

    // working
    ignore: ["simpleProp3"]

};
Run Code Online (Sandbox Code Playgroud)

更多的信息

我为你创造了一个jsFiddle.

请注意:我已经简化了使用fromJSON删除模型生成的示例:

// created and modified by ko.mapping.fromJSON - with custom mapping!
var myModel …
Run Code Online (Sandbox Code Playgroud)

javascript knockout-mapping-plugin knockout.js

4
推荐指数
1
解决办法
1539
查看次数