ASP.NET核心模型绑定

时间:2017-08-23 07:22:48

标签: asp.net-core-mvc

我正在尝试将编辑操作绑定到不起作用的模型。在控制器下方:

            [Route("[controller]/[action]")]
                public class CustomerController : Controller
                {
                    private readonly IUnitOfWork _unitOfWork;
                    public CustomerController(IUnitOfWork unitOfWork)
                    {
                        _unitOfWork = unitOfWork;
                    }  

                    [HttpGet("{_customerCode}")]
                    public IActionResult Edit(int _customerCode)
                    {
                        var customer = _unitOfWork.Customers.getCustomerByCode(_customerCode);
                        var customerDTO = Mapper.Map<CustomerModelDTO>(customer);
                        return View(customerDTO);

                    }

                    [HttpPost]
                    public IActionResult Edit(CustomerModelDTO model)
                    {

                        if (!ModelState.IsValid)
                        {
                            return View(model);
                        }

                        var _customer = _unitOfWork.Customers.getCustomerByCode(model.CustomerCode);

                        if (_customer==null)
                        {
                            return NotFound();
                        }


                         Mapper.Map(model, _customer);
                        _unitOfWork.Complete(); 

                        return RedirectToAction("Detail", new { customerCode = _customer.CustomerCode });
                    }        
                }

这是我正在使用的观点:

            @model Almiz.Dtos.CustomerModelDTO

            <form asp-action="Edit" method="post">
                <div class="form-horizontal">
                    <h4>CustomerModelDTO</h4>
                    <hr />
                    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                    <div class="form-group">
                        <label asp-for="CustomerCode" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="CustomerCode" class="form-control" />
                            <span asp-validation-for="CustomerCode" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label asp-for="FirstName" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="FirstName" class="form-control" />
                            <span asp-validation-for="FirstName" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label asp-for="MiddleName" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="MiddleName" class="form-control" />
                            <span asp-validation-for="MiddleName" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label asp-for="LastName" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="LastName" class="form-control" />
                            <span asp-validation-for="LastName" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label asp-for="Telephone" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="Telephone" class="form-control" />
                            <span asp-validation-for="Telephone" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label asp-for="Mobile" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="Mobile" class="form-control" />
                            <span asp-validation-for="Mobile" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label asp-for="Email" class="col-md-2 control-label"></label>
                        <div class="col-md-10">
                            <input asp-for="Email" class="form-control" />
                            <span asp-validation-for="Email" class="text-danger" />
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-10">
                            <input type="submit" value="Save" class="btn btn-default" />
                        </div>
                    </div>
                </div>
            </form>

            <div>
                <a asp-action="Index">Back to Index</a>
            </div>

            @section Scripts {
                @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
            }

当我调用视图并使用ID http://localhost:65001/Customer/Edit/1001时,我会获得所有信息。但是,当我编辑它并发布编辑后的表单时,我得到资源未找到错误。请帮忙。以下是模型:

            public class CustomerModelDTO
                {        

                    public int CustomerCode { get; set; }

                    public string FirstName { get; set; }

                    public string MiddleName { get; set; }

                    public string LastName { get; set; }
                    public double Telephone { get; set; }
                    public double Mobile { get; set; }

                    public string Email { get; set; }
                }

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。下面是变化。

            [HttpPost("{customerCode}")]
            public IActionResult Edit(int customerCode, CustomerModelDTO data)