gpt4 book ai didi

c# - 如何通过 Windows Phone 7 将数据传递给 Asp.net Web API

转载 作者:行者123 更新时间:2023-11-30 18:35:48 26 4
gpt4 key购买 nike

我想知道在使用 Windows Phone 7 和 asp.net web api 时如何来回发送数据?

我的webapi中有这个方法

public HttpResponseMessage Get(VerifyUserVm vm)
{
if (ModelState.IsValid)
{
userService.ValidateUser(vm.Email);

if (userService.ValidationDictionary.IsValid)
{
HttpResponseMessage reponse = Request.CreateResponse(HttpStatusCode.OK, userService.ValidationDictionary.ModelState["Success"]);
return reponse;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest, userService.ValidationDictionary.ModelState);
}
}

return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}

public class VerifyUserVm
{
[Required]
public string Email { get; set; }
}

我的 WP7 中的这段代码

private void btnSignIn_Click(object sender, RoutedEventArgs e)
{
string urlPath = String.Format(WebApiHelp.ApiUrl,"user","get");
UriBuilder uri = new UriBuilder(urlPath);
uri.Query = "email=" + txtEmail.Text;
webclient.OpenReadAsync(uri.Uri);
}

生成的 url 是这样的:http://localhost:50570/api/user/get?email=c

但 Vm 始终为空。

最佳答案

Web.Api 以 session 方式绑定(bind)来自请求正文的 URL 和复杂类型(任何其他自定义类型)的简单参数(整数、字符串等)。

如果您想从 url(例如:查询字符串)绑定(bind)复杂类型 VerifyUserVm,您需要使用 FromUriAttribute 注释参数:

public HttpResponseMessage Get([FromUri]VerifyUserVm vm)
{
//..
}

还有一件事:属性的大小写应该匹配:

在您的 VM 中,您的 Email 是大写的 E 但您发送的 email 是小写的 e .

所以你需要像这样构建你的参数:

uri.Query = "Email=" + txtEmail.Text;

进一步阅读:How WebAPI does Parameter Binding

关于c# - 如何通过 Windows Phone 7 将数据传递给 Asp.net Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14539104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com