简体   繁体   English

提交按钮不发布更改

[英]Submit button doesn't post changes

I'm with a problem when updating an object in my MVC application: 更新我的MVC应用程序中的对象时遇到问题:

This is my whole view, it has a submit button that must to update itens inside NotAcceptedJobOfferts list: 这是我的整体视图,它具有一个“提交”按钮,必须在NotAcceptedJobOfferts列表中更新NotAcceptedJobOfferts

@model  TCCApplication.ViewModels.ProfessionalDashboard

@{
    ViewBag.Title = "Dashboard";
}
@using (Html.BeginForm("AcceptJobOfferts","Professional")){
<div class="row">
    <div class="col-md-5">

        @Html.HiddenFor(model => model.Professional.Id)

        <h2>Minhas tarefas</h2>

        @for (int i = 0; i < Model.AcceptedJobOfferts.Count; i++)
        {

            @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Id)

            <div class="row">
                <div class="col-md-3">
                    <label>Oferta: </label>
                    @Html.DisplayFor(itemModel => Model.AcceptedJobOfferts[i].Description)
                </div>

                @*<div class="col-md-2">
                    <label>Aceito</label>
                    @Html.DisplayFor(itemModel => Model.AcceptedJobOfferts[i].Accepted)
                </div>*@

                <div class="col-md-5">
                    <label>Data do trabalho</label>
                    @Html.DisplayFor(itemModel => Model.AcceptedJobOfferts[i].JobDate)
                </div>


                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Professional.Id)
                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Professional.Name)
                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Professional.Skills)
                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Professional.BirthDate)

                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].JobDate)
                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Active)
                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Description)
                @Html.HiddenFor(itemModel => Model.AcceptedJobOfferts[i].Accepted)

            </div>
        }
    </div>
    <div class="col-md-7">

        <h2>Ofertas de trabalho indicadas</h2>

            @for (int i = 0; i < Model.NotAcceptedJobOfferts.Count; i++)
            {

                @Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].Id)
                @Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].Description)
                @Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].Active)
                @Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].Accepted)
                @Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].JobDate)

                @Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].Professional.Id)


                <div class="row">
                    <div class="col-md-3">
                        <label>Oferta: </label>
                        @Html.EditorFor(itemModel => Model.NotAcceptedJobOfferts[i].Description)
                    </div>

                    <div class="col-md-2">
                        <label>Aceito</label>
                        @Html.EditorFor(itemModel => Model.NotAcceptedJobOfferts[i].Accepted)
                    </div>

                    <div class="col-md-5">
                        <label>Data do trabalho</label>
                        @Html.DisplayFor(itemModel => Model.NotAcceptedJobOfferts[i].JobDate)
                    </div>  

                </div>
            }
            <div>
                <input type="submit" value="Aceitar Ofertas" />
            </div>


    </div>

</div>


<div class="row" style="height:50px">




</div>



<div class="row">

    <div class="col-md-12 text-center">
        <div>
            <label>Cliente: </label>

            @Model.Professional.Name
        </div>

        <div>
            <label>Data de nascimento: </label>

            @Model.Professional.BirthDate
        </div>

        <div>
            <label>Telefone: </label>

            @Model.Professional.PhoneNumber
        </div>

        <div>
            <label>Usuário: </label>

            @Model.Professional.UserAccount.Username
        </div>

        <div>
            <label>Profissão: </label>

            @Model.Professional.Profession
        </div>

        <div>
            <label>Bairro: </label>

            @Model.Professional.UserAddress.Neighborhood
        </div>

        <p class="div-to-btn">
            @Html.ActionLink("Alterar informações", "Edit", new { id = @Model.Professional.Id })
        </p>

    </div>
</div>
}

But when I sent the data to controller the object is not updated: 但是,当我将数据发送到控制器时,该对象未更新:

My controller methods: 我的控制器方法:

        public ActionResult ViewMyTasks(int professionalId)
        {
            initBusinessObjects();

            ProfessionalDashboard dashboard = new ProfessionalDashboard();

            var notAcceptedJobOfferts = jobOffertBusiness.GetNotAcceptedJobOfferts(professionalId).ToList();

            var acceptedJobOfferts = jobOffertBusiness.GetAcceptedJobOfferts(professionalId).ToList();
            var professional = professionalBusiness.GetById(professionalId);

            dashboard.AcceptedJobOfferts = acceptedJobOfferts;
            dashboard.NotAcceptedJobOfferts = notAcceptedJobOfferts;
            dashboard.Professional = professional;

            return View(dashboard);
        }

        [HttpPost]
        public ActionResult AcceptJobOfferts(ProfessionalDashboard profDash)
        {
            initBusinessObjects();

            foreach (var jo in profDash.NotAcceptedJobOfferts)
            {
                jobOffertBusiness.Update(jo);
            }

            return RedirectToAction("ViewMyTasks", new { professionalId = profDash.Professional.Id});
        }

What I must to do to my view send updated data? 我必须怎么做才能发送更新的数据?

try this 尝试这个

@using(Html.BeginForm("Action","Controller",FormMethod.Post))
{
   ...
   ...
}

Hidden fields has same name with the inputs which is causes duplicate form keys. 隐藏字段与输入具有相同的名称,这会导致表单键重复。 You need to remove hiddens or change their name. 您需要删除隐藏物或更改其名称。

@Html.HiddenFor(itemModel => Model.NotAcceptedJobOfferts[i].Description) 
// eg. <input type="hidden" name="NotAcceptedJobOfferts[0].Description" />
...
@Html.EditorFor(itemModel => Model.NotAcceptedJobOfferts[i].Description)
// eg. <input type="text" name="NotAcceptedJobOfferts[0].Description" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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