我正在使用 Asp.NET WebApi,让我感到困惑的一件事是完成请求时的绑定。
我有这个 ViewModel:
[DataContract(Name="Store")]
public class StoreDm
{
[DataMember(IsRequired = true)]
[MinLength(3)]
public string Name { get; set; }
[DataMember(IsRequired = true)]
public double Latitude { get; set; }
[DataMember(IsRequired = true)]
public double Longitude { get; set; }
}
public HttpResponseMessage GetStoreNames(StoreDm vm)
{
if (ModelState.IsValid)
{
}
}
RestClient c = new RestClient("http://localhost:3333/api/store");
RestRequest r = new RestRequest("/GetStoreNames", Method.GET);
r.AddParameter("Name", autoComplete);
r.AddParameter("Latitude", "4");
r.AddParameter("Longitude", "-7");
var d = c.BuildUri(r);
c.ExecuteAsync(r, response2 =>
{
var content = response2.Content;
});
我的 StoreDm 为空。
我在很多层面上都没有得到这个。首先,我在我的所有属性上设置了 IsRequired,但无论出于何种原因,ModelState 都认为“null”ViewModel 是有效的。
其次,我不明白为什么会这样null
。我必须添加[FromUri]
以使其绑定。如果这将是一个Post
并且具有相同的 restClient 代码但有人正在使用提琴手正文请求会发生什么。
如果我被迫提出,[FromUri]
那么我认为提琴手正文请求不会起作用。
我怎么能拥有它,以便两个请求都通过并正确绑定?