加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 将对象作为参数传递给Breeze控制器操作

发布时间:2020-12-16 03:54:37 所属栏目:asp.Net 来源:网络整理
导读:我试图通过Breeze发送一个对象作为参数而没有成功. 使用以下代码我可以发送一个基本类型: 客户: var query = EntityQuery .from('account/authenticate') .withParameters({ loginRequest: "hello" }); 服务器: [BreezeController]public class AccountCo
我试图通过Breeze发送一个对象作为参数而没有成功.

使用以下代码我可以发送一个基本类型:

客户:

var query = EntityQuery
    .from('account/authenticate')
    .withParameters({ loginRequest: "hello" });

服务器:

[BreezeController]
public class AccountController : ApiController
{
    [HttpGet]
    public LoginResult Authenticate(string loginRequest)
    {
        // String for loginRequest received successfully
    }
}

但是,如果我尝试传递复杂类型,则param始终为null:

客户:

var loginRequest = { userName: 'me',password: 'pass' };

var query = EntityQuery
    .from('account/authenticate')
    .withParameters({ loginRequest: loginRequest });

服务器:

[BreezeController]
public class AccountController : ApiController
{
    [HttpGet]
    public LoginResult Authenticate(LoginRequest loginRequest)
    {
        // Object for loginRequest always null
    }
}

我相信这部分是因为Breeze总是使用GET进行查询. POST可能正确处理序列化,但我无法在Breeze API中看到任何强制POST的方法.

如果我传递了对象的JSON字符串表示,我可以在服务器端获取它,但这需要手动反序列化.我意识到我可以通过标准的WebAPI调用在Breeze之外执行此操作,但我正在尝试保持所有服务器端调用都在同一个管道中运行.

是否有可能做到这一点?

解决方法

您可能缺少[FromUri]属性.每当我尝试传递更复杂的对象或参数集时,一切都将返回为null,直到我添加该属性.

[BreezeController]
public class AccountController : ApiController
{
    [HttpGet]
    public LoginResult Authenticate([FromUri] LoginRequest loginRequest)
    {
        // Object for loginRequest always null
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读