У меня есть три вкладки, где пользователь может вводить данные и сохранять данные, которые были предоставлены на каждой вкладке.Сценарий выглядит следующим образом: пользователь предоставляет данные на вкладке 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();
}
}