鉴于以下代码:
public CollectionResult<SetupsDetailsModels> GetSetupsDetails([FromUri]SetupsDetailsCollectionFilterMapping filter)
如果请求不包含任何查询参数,则filter对象始终为null,如何确保即使没有发送任何始终创建实例的参数?
一种简单的方法是添加一个Message Handler并添加一个虚拟查询字符串参数,该方法总是创建对象,但我真的不喜欢这个解决方案。
由于
答案 0 :(得分:1)
即使使用动作过滤器,您仍然需要将其添加到您需要的所有方法中。或者,您可以使用默认参数。
public CollectionResult<SetupsDetailsModels> GetSetupsDetails([FromUri]SetupsDetailsCollectionFilterMapping filter = new SetupsDetailsCollectionFilterMapping())
答案 1 :(得分:0)
我在Web API Parameter Binding return instance even without request parameters
找到了这个想法这就是我要做的:
<form action="/admin/banners/adicionar" method="POST" enctype="multipart/form-data">
<div class="form-group">
<small>Imagens de até 1024x768</small>
</div>
<div class="form-group">
<label for="selecionar_imagem">Selecionar Imagem</label>
<input type="file" name="imagem" required/>
</div>
<hr/>
<div class="form-group">
<button class="btn btn-primary pull-right">Adicionar</button>
</div>
</form>
答案 2 :(得分:0)
您可以将其设置为路线的默认值:
routes.MapRoute(
name: "test",
url: "{controller}/{action}/{filter}",
defaults: new { controller = "Home", action = "Index", filter = new SetupsDetailsCollectionFilterMapping() }
);
如果filter
为空,则会创建SetupsDetailsCollectionFilterMapping
的新实例,否则它将是您通过的filter
。
可以省去您必须完成所有方法并添加操作过滤器。
只是用类似的东西测试它并且它有效。