我试图通过提交一个表单来使用.NET核心MVC发出一个POST请求。从视图成功地进行了调用,如下所示:

我的控制器代码如下所示:
[HttpPost("fred-responses-report-result/{formId:int?}")]
public async Task<IActionResult> FredResponsesReportResult(int? formId, ReportFilters filters)formId参数通过很好的方式被设置为63,但是report对象(下面)只是null。课程如下,如果有关系的话:
public class ReportFilters
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime FromDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime ToDate { get; set; }
}到目前为止,我已经读过这篇文章和这个职位了。我尝试过从模型中删除属性--没有帮助。我尝试了预挂的[FromBody]和[FromForm]到控制器param,结果导致415 http错误。
在这一点上,我有点不知所措,不知道该如何使它发挥作用。如果我查看“视图源”(在屏幕截图中),似乎这些文件只是作为HTML编码的字符串而不是JSON传递的,尽管我不明白为什么。无论如何,这里的正确方法是什么?
编辑,下面是调用的代码:
<form action="" method="post">
<div class="row gray-background">
<!--Date Filter-->
<div class="col-12">
<div class="row">
<div class="col-2 offset-1 bold-font">
<p>Submitted Date</p>
</div>
<div class="col-3">
<div class="date datepicker fromDate">
<label for="fromDate">From</label>
<div class="input-group">
<input id="fromDate" name="fromDate" type="text" class="form-control" value="1">
<span class="input-group-addon">
<i class="fa fa-calendar fa-lg"></i>
</span>
</div>
</div>
</div>
<div class="col-3">
<div class="date datepicker toDate">
<label for="toDate">To</label>
<div class="input-group">
<input id="toDate" name="toDate" type="text" class="form-control" value="@Model.ReportFilters.ToDate">
<span class="input-group-addon">
<i class="fa fa-calendar fa-lg"></i>
</span>
</div>
</div>
</div>
</div>
<!--Update Filters Button-->
<div class="row">
<div class="col-12 d-flex justify-content-center">
<button class="btn button-margin btn-primary"
type="submit">
Update Filter
</button>
</div>
</div>
</div>
</div>
</form>发布于 2018-02-06 22:29:21
[HttpPost("fred-responses-report-result/{formId:int?}")]
public async Task<IActionResult> FredResponsesReportResult(int? formId,[Bind("ToDate","FromDate")]ReportFilters filters)
{这应该能行。由于您使用的是直模型(我相信)这个实例,bind将允许您只针对希望从表单返回的字段。
如果没有在实际视图中看到与表单关联的其余代码,并且如果您没有执行AJAX发布(内容类型未设置为application/json),那么[FromBody]将永远无法工作。
下一个问题是实际使用的路径是否需要一个名为formId的变量,还是使用默认的id
发布于 2018-02-06 22:24:13
尝试以这种格式提交表单数据:
filters.fromDate: ..
filters.toDate: ...而不是
fromDate: ...
toDate: ...https://stackoverflow.com/questions/48652896
复制相似问题