简体   繁体   中英

No data binding on form submission

I'm migrating a ASP.NET 5 app to ASP.NET core. Everything is going well except that I can't submit a form.

When I do, looking at the Chrome's network timeline, the controller URL is reached (/MyController/Create) but nothing happens (The browser is idling, waiting).

After looking for some explanations: trying to call a parameterless controller works fine. Adding [FromForm] returns a 415. [FromData] idle too...

I can't find anything on the internet. Here too! (For the first time during my entire life).

NB: Everything was working fine using ASP.NET 5 MVC 6. Same code on both side.

Here is my controller code:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(SocieteGroupe societeGroupe)
    {
        if (ModelState.IsValid)
        {
            _context.SocieteGroupe.Add(societeGroupe);
            await _context.SaveChangesAsync();
            return RedirectToAction("Index");
        }
        ViewData["Id_Devise"] = new SelectList(_context.Devise, "Id", "Code_ISO", societeGroupe.Id_Devise);
        return View(PackageUtils.GetViewPath(viewPath, OperationType.CREATE), societeGroupe);
    }

And my view :

<form asp-controller="SocieteGroupes" asp-action="Create">
<div class="form-horizontal">
    <h4>SocieteGroupe</h4>
    <hr />
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="Id_Devise" class="col-md-2 control-label"></label>
        <div class="col-md-10">
            <select asp-for="Id_Devise" class ="form-control" asp-items="ViewBag.Id_Devise"></select>
        </div>
    </div>
    <div class="form-group">
        <label asp-for="Id_Salesforce" class="col-md-2 control-label"></label>
        <div class="col-md-10">
            <input asp-for="Id_Salesforce" class="form-control" />
            <span asp-validation-for="Id_Salesforce" class="text-danger" />
        </div>
    </div>
    <div class="form-group">
        <label asp-for="Nom" class="col-md-2 control-label"></label>
        <div class="col-md-10">
            <input asp-for="Nom" class="form-control" />
            <span asp-validation-for="Nom" class="text-danger" />
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
</div>

Does someone already faced out this problem or got an idea about it?

EDIT:

Instead of using a complexe type as parameter. I tried (for debug purposes) to use a string instead and return the string in Json format in order to debug it. Whatever I use (nothing, [FromForm], [FromBody]...), the result is null. I don't know what to do next. Any help will be appreciated :D

Thanks in advance :)

I found a workaround. This is a known bug of RC2.

According this link , you need to download this file and put it wherever you want in your project. Then you just need, in Startup.cs to add the line services.AddSingleton<IModelBinderFactory, MyModelBinderFactory>();

And that's all! For me, it worked :D

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM