首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在.NET Core中发布数据

无法在.NET Core中发布数据
EN

Stack Overflow用户
提问于 2018-02-06 22:17:50
回答 2查看 3.3K关注 0票数 2

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

我的控制器代码如下所示:

代码语言:javascript
复制
[HttpPost("fred-responses-report-result/{formId:int?}")]
public async Task<IActionResult> FredResponsesReportResult(int? formId, ReportFilters filters)

formId参数通过很好的方式被设置为63,但是report对象(下面)只是null。课程如下,如果有关系的话:

代码语言:javascript
复制
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传递的,尽管我不明白为什么。无论如何,这里的正确方法是什么?

编辑,下面是调用的代码:

代码语言:javascript
复制
            <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-06 22:29:21

代码语言:javascript
复制
[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

票数 2
EN

Stack Overflow用户

发布于 2018-02-06 22:24:13

尝试以这种格式提交表单数据:

代码语言:javascript
复制
filters.fromDate: ..
filters.toDate: ...

而不是

代码语言:javascript
复制
fromDate: ...
toDate: ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48652896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档