.NET MVC Core视图未将结果绑定到控制器

时间:2016-09-10 14:28:15

标签: c# asp.net asp.net-mvc asp.net-core

我无法从视图中获取已发布的表单值以绑定到控制器,因为它似乎在ViewModel中返回null,尽管发送了post请求的内容。我已经包含了视图和控制器的内容,因为我假设我必须缺少一些简单的东西,因为我对.NET MVC还不熟悉。

视图

  @model IEnumerable<MyPortal.ViewModels.SubscriptionsViewModel>

    @{
    ViewBag.Title = "Subscriptions";
    }
    <h2>Subscriptions</h2>
    <div class="row">
        <div class="col-md-6 offset3">
            <form>
                <div class="input-group">
                    <input type="text" value="" class="form-control" placeholder="Search by [Name or [ID]" />
                    <span class="input-group-btn">
                        <button class="btn btn-default" type="button">Search</button>
                    </span>
                </div>
            </form>
        </div>
    </div>


    <div class="row" id="results">
        <div class="col-md-6 offset3">
            <table class="table">
                <tr>
                    <th>MemberID</th>
                    <th>SubscriptionRef</th>
                    <th>SubType</th>
                    <th>StartDate</th>
                    <th>EndDate</th>
                    <th>PrimaryPays</th>
                    <th>Save</th>
                </tr>
                @foreach (var item in Model)
                {
                <tr class="searchResultRow">
                    @*
                    <input type="hidden" name="SubscriptionRef" value="@item.SubscriptionRef" />*@
                    @*
                    <td>@item.MemberID</td>
                    <td></td>
                    <td>@item.SubscriptionRef</td>
                    <td>@item.SubType</td>
                    <td>@item.StartDate</td>
                    <td>@item.EndDate</td>
                    <td class="text-center">@Html.CheckBox("PrimaryPaysInd", "PrimaryPaysIndBool") @item.PrimaryPaysInd @item.PrimaryPaysIndBool</td>*@
                    @using (Html.BeginForm("save", "secure", FormMethod.Post, new { redeemTransaction = Model }))
                    {
                    @Html.HiddenFor(modelItem => item.SubscriptionRef)
                    <td>@Html.DisplayFor(modelItem => item.MemberID)</td>
                    <td>@Html.DisplayFor(modelItem => item.SubscriptionRef)</td>
                    <td>@Html.DisplayFor(modelItem => item.SubType)</td>
                    <td>@Html.DisplayFor(modelItem => item.StartDate)</td>
                    <td>@Html.DisplayFor(modelItem => item.EndDate)</td>
                    <td>@Html.CheckBoxFor(modelItem => item.PrimaryPaysIndBool)</td>
                    <td asp-for="PrimaryPaysInd">@item.PrimaryPaysInd</td>

                    <td><button class="btn btn-primary" id="btnSave" name="save" value="Save"><i class="fa fa-save"></i> Save</button></td>
                    }
                </tr>
                }
            </table>
        </div>
    </div>
    <div class="row">
        <div class="col-md-6 offset3">
        </div>
    </div>

控制器

        using Microsoft.AspNetCore.Mvc;
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using MyPortal.ViewModels;
        using Microsoft.AspNetCore.Authorization;
        using MyPortal.Models;
        using System.Diagnostics;
        using Microsoft.Extensions.Logging;
        using Microsoft.EntityFrameworkCore;
        using AutoMapper;
        namespace MyPortal.Controllers
        {
        public class SecureController : Controller
        {
            private ILogger _logger;
            private PortalContext _context;

            public SecureController(ILogger<SecureController> logger, PortalContext context)
            {
                _context = context;
                _logger = logger;
            }

            public ActionResult Search([FromForm]SubscriptionsViewModel subscriptions)
            {
                var searchParam = subscriptions.searchParam;
                return RedirectToAction("index");
            }

            public IEnumerable<SubscriptionsViewModel> GetAllSubscriptionsById()
            {
                return (from s in _context.Subscriptions
                        where s.MemberID == 123
                        select new SubscriptionsViewModel
                        {
                            MemberID = s.MemberID,
                            SubTypeID = s.SubTypeID,
                            SubscriptionRef = s.SubscriptionRef,
                            StartDate = s.StartDate,
                            EndDate = s.EndDate,
                            PrimaryPaysInd = s.PrimaryPaysInd
                        }).Take(15).ToList();
            }

            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult save([FromForm]SubscriptionsViewModel reedemTransaction)
            {
                _logger.LogInformation("******************");
                _logger.LogInformation("EXECUTING POST");
                _logger.LogInformation("******************");
                if (ModelState.IsValid)
                {
                    var newSubscription = Mapper.Map<Subscription>(reedemTransaction);
                    _logger.LogInformation("***********************");
                    _logger.LogInformation("SubscriptionRef: " + reedemTransaction.SubscriptionRef);
                    _logger.LogInformation("PrimaryPaysInd: " + reedemTransaction.PrimaryPaysInd);
                    _logger.LogInformation("************************");
                    return RedirectToAction("subscription", "secure");
                }
                return RedirectToAction("index", "secure");
            }      
        }
    }

0 个答案:

没有答案