Сохранять данные в каждой форме после того, как пользователь сохранил данные и перешел на следующую форму для ввода дополнительных данных. - PullRequest
0 голосов
/ 24 января 2019

У меня есть три вкладки, где пользователь может вводить данные и сохранять данные, которые были предоставлены на каждой вкладке.Сценарий выглядит следующим образом: пользователь предоставляет данные на вкладке 1, затем нажимает кнопку «Сохранить» и переходит на вкладку 2, вводит данные и нажимает кнопку «Сохранить», затем переходит на вкладку 3, вводит данные и нажимает кнопку «Сохранить» перед отправкой данных всех пользователей.три вкладки вместе.Каждая вкладка связана с собственным Html.BeginForm () в Razor.На моем контроллере каждый указатель ActionResult "возвратный просмотр (модель)".Каждый раз, когда пользователь сохраняет данные, которые были введены на вкладке, я бы хотел, чтобы данные сохранялись в представлении, чтобы пользователь мог в любой момент вернуться и внести некоторые изменения перед отправкой данных всех трех вкладок.После поиска в Google я обнаружил, что Индекс ActionResult не может быть перегружен в MVC.Чтобы решить мою проблему, я попытался использовать атрибут [ActionName] для каждого индекса ActionResult, но я получил сообщение об ошибке "Представление« ProcessForm1 »или его мастер не найдены или ни один механизм представления не поддерживает найденные местоположения.места были найдены: ~ / Просмотры / Главная / ProcessForm1.aspx ~ / Просмотры / Главная / ProcessForm1.ascx ~ / Просмотры / Shared / ProcessForm1.aspx ~ / Просмотров / Shared / ProcessForm1.ascx ~ / Просмотров / Главная / ProcessForm1.cshtml ~/Views/Home/ProcessForm1.vbhtml ~ / Views / Shared / ProcessForm1.cshtml ~ / Views / Shared / ProcessForm1.vbhtml " Может кто-то указать мне правильное направление?Вот то, что у меня есть.

  /*in Razor*/


 @model ProjectRequest.Models.CommonViewModel


 @using (Html.BeginForm("ProcessForm1", "Home", FormMethod.Post, new 
 { 
       <div style="margin-left:12px">
                    <div class="form-row">
                        <!-- to keep "Requested by" and "Bureau" on the same row level-->


                        <div class="form-group col-md-5">




                            <p><span style="color: red">*</span>Requested By:</p>

                            @*<input type="text" class="form-control" size="70" id="inputRequestorFullName" placeholder="First name Last name" required>*@

                            @using (Html.BeginForm())
                            {
                                @Html.TextBoxFor(m => m.RequestFormVM.RequestorName, new { type = "text", placeholder = "First name Last name", required = "required", @class = "form-control" })
                            }




                            <div class="valid-feedback">First and Last Name.</div>
                            <div class="invalid-feedback">First and Last Name required!</div>
                        </div>




                        @{

                            var ListOfBureau = new List<SelectListItem>(){
                                                      new SelectListItem(){Text="Court Services", Value="Court Services"},
                                                      new SelectListItem(){Text="Detention Services", Value="Detention Services"},
                                                      new SelectListItem(){Text="Human Resources", Value="Human Resources"},
                                                      new SelectListItem(){Text="Law Enforcement", Value="Law Enforcement"},
                                                      new SelectListItem(){Text="Management Services", Value="Management Services"},

                            };
                        }



                        @*<div class="form-group col-md-5" style="margin-left:118px">*@
                        <div class="form-group col-md-5" style="margin-left:142px">
                            <p><span style="color: red">*</span>Bureau:</p>


                            @Html.DropDownListFor(m => m.RequestFormVM.Bureau, ListOfBureau, "Choose Bureau...", new { required = "required", @class = "custom-select" })


                            <br />


                            <div class="invalid-feedback">A bureau is required!</div>
                        </div>






                    </div>  <!--End--div class=form-row-->


                    <div class="form-row">
                        <div class="form-group col-md-5">
                            <p><span style="color: red">*</span>User ID:</p>
                            @*<input type="text" class="form-control" id="inputUserID" placeholder="i.e. msmithsh" required>*@  <!--I stopped right here. I have to change it to User ID field-->


                            @Html.TextBoxFor(m => m.RequestFormVM.RequestorUserID, new { type = "text", placeholder = "i.e. msmithsh", required = "required", @class = "form-control" })



                            <div class="valid-feedback">User ID</div>
                            <div class="invalid-feedback">User ID is required!</div>
                        </div>

                        <div class="form-group col-md-5" style="margin-left:142px">




                            @{

                                var ProjectLocations = new List<SelectListItem>(){
                                                           new SelectListItem(){Text="4S Ranch Substation", Value="4S Ranch Substation"},
                                                           new SelectListItem(){Text="Academy", Value="Academy"},
                                                           new SelectListItem(){Text="Alpine Station", Value="Alpine Station"},
                                                           new SelectListItem(){Text="Barette Junction", Value="Barette Junction"},
                                                           new SelectListItem(){Text="Other", Value="Other"},

                                };
                            }


                            <p><span style="color: red">*</span>Project Location:</p>

                            @Html.DropDownListFor(m => m.RequestFormVM.ProjectLocation, ProjectLocations, "Choose Project Location...", new { required = "required", @class = "custom-select" })

                            <div class="invalid-feedback">A project location is required!</div>

                        </div>
                    </div>
       <!---More code here but I did not show it--->

       <button type="submit" class="btn btn-secondary" id="SaveFirstTabOnly" value=" Send">Save information</button>
       <button type="button" id="btnNextOfFirstTab" style="margin-left:12px" class="btn btn-info btn-tab-next">Next >></button>

      </div>
 }




 @using (Html.BeginForm("ProcessForm2", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "2ndTab" }))
 {
                <div class="form-group col-md-12">
                    <p><span style="color: red">*</span>Project overview:</p>
                    @Html.TextAreaFor(m => m.RequestFormVM.ProjectOverview, new { type = "text", style = "max-width:100%", required = "required", placeholder = "Provide a short description of your project here...", @class = "form-control" })


                    <div class="invalid-feedback">Project Overview is required!</div>
                    <script>
                        autosize(document.querySelectorAll('textarea'));
                    </script>

                    <br />
                    <p><span style="color: red">*</span>Check project features:</p>



                </div>

      <!---More code here but I did not show it--->

  <div class="form-group col-md-12">
                    <!---Saving Second tab with Check boxes-->
                    <button type="button" id="btnPreviousOfSecondTab" class="btn btn-info btn-tab-prev"><< Previous</button>
                    <button type="submit" class="btn btn-secondary" id="SavSecondTabOnly" value=" Send">Save information</button>  <!--Save data of Second Tab-->
                    <button type="button" id="btnNextOfSecondTab" class="btn btn-info btn-tab-next">Next >></button>

                </div>
 }


 @using (Html.BeginForm("ProcessForm3", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "3rdTab" }))
 {
        <!---More code here but I did not show it--->

        <div class="form-group">

              <button type="submit" class="btn btn-secondary" id="SaveThirdTabOnly" value=" Send">Save information</button>  <!--Save data of Third Tab-->
              <button type="submit" class="btn btn-primary" id=" SubmitAllData">Submit</button>
        </div>
 }


 /*in Controller*/

    [HttpPost]
    [ActionName("ProcessForm1")]
    public ActionResult Index(CommonViewModel form)
    {


        string RequestorUserID = form.RequestFormVM.RequestorUserID;

        string Bureau = form.RequestFormVM.Bureau;

        string ProjectLocation = form.RequestFormVM.ProjectLocation;

        string OtherProjectLocation = form.RequestFormVM.OtherProjectLocation;

        using (FacilityRequestEntities db = new FacilityRequestEntities())
        {


            db.RequestForms.Add(form.RequestFormVM);
            db.SaveChanges();

        }

         return View(form);  //persist data on the view

    }



    [HttpPost ]
    [ActionName("ProcessForm2")]
    public ActionResult Index(CommonViewModel form, int? ID)
    {
        if (ID == 0)
        {
            //return View();
        }


        using (var context = new FacilityRequestEntities())
        {
            var secTab = context.RequestForms.Find(form.RequestFormVM.FASPNumberID);
            secTab.ProjectOverview = form.RequestFormVM.ProjectOverview;
            secTab.ProjectJustification = form.RequestFormVM.ProjectJustification;
            secTab.ProjectGoalsAndBenefits = form.RequestFormVM.ProjectGoalsAndBenefits;

            context.SaveChanges();

        }


   return View(form);  //persist data on the view

  }

 /*My Common View Model which contains other Models*/

public class CommonViewModel
{
    public FacilitySupervisorModel FacilitySupervisorVM { get; set; }
    public FacilCommaOrDesigModel FacilCommaOrDesigVM { get; set; }            
    public BudgetAnalystModel BudgetAnalystVM { get; set; }

    public BureauCommanderModel BureauCommanderVM { get; set; }

    public DashboardModel DashboardVM { get; set; }

    public  DirectorOfSupportServiceModel DirectorOfSupportServicesVM { get; set; }

    public RequestForm RequestFormVM { get; set; }

    public ChBoxProjectFeature ChBoxProjectFeatureVM { get; set; }

    public ChBoxDptInitiativesAndStrategy ChBoxDptInitiativesAndStrategyVM { get; set; }

    public ChBoxAdditSuppReq ChBoxChBoxAdditSuppReqVM { get; set; }

    public List<CheckBox> EmptpyChBoxPFList { get; set; }

    public List<ChBoxProjectFeature> ChBoxPFList { get; set; }

    public List<ChBoxDptInitiativesAndStrategy> ChBoxDptInitiativesAndStrategyList { get; set; }

    public List<ChBoxAdditSuppReq> ChBoxAdditSuppReqsList { get; set; }

    public List<CheckBoxTab2> EmptyChBoxTab2DISList { get; set; }

    public List<CheckBoxTab3> EmptyChBoxTab3DISList { get; set; }


    public CommonViewModel()
    {
        this.ChBoxPFList = new List<ChBoxProjectFeature>();  //to hold the list of selected check boxes
        this.EmptpyChBoxPFList = new List<CheckBox>(); //to create the list of empty check boxes on the first tab of the form
        this.EmptyChBoxTab2DISList = new List<CheckBoxTab2>(); //to create the list of empty check boxes on the second tab of the form
        this.EmptyChBoxTab3DISList = new List<CheckBoxTab3>();  // to create the list of empty check boxes on the third tab of the form
        this.ChBoxDptInitiativesAndStrategyList = new List<ChBoxDptInitiativesAndStrategy>();
        this.ChBoxAdditSuppReqsList = new List<ChBoxAdditSuppReq>();

        this.ChBoxDptInitiativesAndStrategyVM = new ChBoxDptInitiativesAndStrategy();
        this.ChBoxChBoxAdditSuppReqVM = new ChBoxAdditSuppReq();

        this.BureauCommanderVM = new BureauCommanderModel();
        this.BudgetAnalystVM = new BudgetAnalystModel();
        this.FacilCommaOrDesigVM = new FacilCommaOrDesigModel();
        this.DirectorOfSupportServicesVM = new DirectorOfSupportServiceModel();
        this.ChBoxProjectFeatureVM = new ChBoxProjectFeature();
        this.RequestFormVM = new RequestForm();


    }



}
...