我的控制器中有一个名为“NewJobApp”的方法可以正常工作并使用“NewJobApp”模型返回视图。
[AllowAnonymous]
[HttpGet("Consultant/NewJobApp/{agencyID:int}/{userID:int}/{companyID:int}/{jobID:int}")]
public async Task<ViewResult> NewJobApp(int agencyID, int userID, int companyID, int jobID)
{
NewJobApp nja = await Repository.GetNewJobApp(agencyID, userID, companyID, jobID);
return View(nja);
}
在视图中我有一个应该调用“SubmitNewJobApp”的表单,但是当我查看页面源时,它显示了action =“”
<form id="JobAppForm" class="form-group" asp-controller="Consultant" asp-action="SubmitNewJobApp" method="post" style="text-align: left">
@Html.AntiForgeryToken()
<input id="AgencyID" asp-for="@Model.AgencyID" value="@Model.AgencyID" type="hidden" />
<input asp-for="@Model.AgencyName" value="@Model.AgencyName" type="hidden" />
<input asp-for="@Model.UserID" value="@Model.UserID" type="hidden" />
<input asp-for="@Model.CompanyID" value="@Model.CompanyID" type="hidden" />
<input asp-for="@Model.JobID" value="@Model.JobID" type="hidden" />
@if (!String.IsNullOrEmpty(Model.Errs))
{
@Html.Raw(Model.Errs);
}
<p style="margin: 0px; font-size: 8px"> </p>
<div class="form-group">
<label style="width: 120px; text-align: left; display: inline-block;" asp-for="@Model.JobTitle">Job:</label>
<input type="text" asp-for="@Model.JobTitle" value="@Model.JobTitle" readonly />
</div>
<div class="form-group">
<label style="width: 120px; text-align: left; display: inline-block;" asp-for="@Model.CompanyName">Company:</label>
<input type="text" asp-for="@Model.CompanyName" value="@Model.CompanyName" readonly />
</div>
<p style="margin-bottom: 4px;">Enter person search expression:</p>
<input asp-for="@Model.SearchExpression" value="@Model.SearchExpression" style="width: 132px; margin-bottom: 8px;" />
<button id="myButton" class="btn btn-primary" type="submit">Get Candidates</button>
<p style="margin: 0px; font-size: 8px"> </p>
<div class="form-group">
<label style="width: 120px; display: inline-block;" asp-for="ContactID">Contact:</label>
@Html.DropDownListFor(m => m.ContactID, Model.Contacts, "Choose a Contact", new { @class = "myDDL", @id = "contactsDDL" })
</div>
<div class="text-center" style="text-align: right">
<button id="btnSave" class="btn btn-primary" type="submit">Save</button>
</div>
</form>
这是控制器中的“SubmitNewJobApp”方法,但它永远不会被调用。
[HttpPost()]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SubmitNewJobApp(NewJobApp nj)
{
int id = 0;
bool is_err = false;
string err = string.Empty;
// check data
if (nj.ContactID == 0)
{
is_err = true;
}
// check model state
if (!ModelState.IsValid || is_err)
{
nj = await Repository.GetNewJobApp(nj);
return View("NewJobApp", nj);
}
nj.NewRecordID = id;
return View("NewJobApp", nj);
}
答案 0 :(得分:0)
我仍然不明白为什么这不起作用,但我有一个临时解决方案。
如果我在返回“NewJobApp”视图的方法上删除HttpGet模板,表单操作现在包含一个值,并且有效!
以前的方法:
parameter
现在改为:
function
这是调用“NewJobApp”控制器方法的更改代码:
[AllowAnonymous]
[HttpGet("Consultant/NewJobApp/{agencyID:int}/{userID:int}/{companyID:int}/{jobID:int}")]
public async Task<ViewResult> NewJobApp(int agencyID, int userID, int companyID, int jobID)
{
NewJobApp nja = await Repository.GetNewJobApp(agencyID, userID, companyID, jobID);
return View(nja);
}
但实际上我更喜欢使用模板,因为我希望看起来更干净的URL。
我的启动路线:
[HttpGet()]
[AllowAnonymous]
public async Task<ViewResult> NewJobApp(int agencyID, int userID, int companyID, int jobID)
{
NewJobApp nja = await Repository.GetNewJobApp(agencyID, userID, companyID, jobID);
return View(nja);
}