在我的"创建"查看我的模特,我喜欢"提交"按钮以及"提交&关闭"按钮。我正在查看this question的答案,以获取有关如何从控制器操作关闭页面的信息(尽管我看到一些评论说这不可能 - 有没有解决方法?)。
这些是当前的按钮:
@using (Html.BeginForm())
{
@Html.HiddenFor(model => model.Project.ProjectID);
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="save-buttons">
@if (Model.ReadOnly)
{
<button type="button" id="close_page" onclick="closeWindow();">Close</button>
}
else
{
<button type="submit">Save Project</button>
if (Model.Project == null)
{
<button type="button">Delete Project</button>
}
else
{
<button type="button" onclick="deleteProject(@Model.Project.ProjectID, @Model.Project.SubmissionNumber);">Delete Project</button>
}
<button type="button">Save & Close</button>
}
</div>
... the form itself is below here
,提交操作为:
public ActionResult Create([Bind(Include = "ProjectName,ProjectDescription,DateReceived,EffectiveDate,ExpirationDate,GeneralContractor,ProjectTerm,ProjectType,SubmissionNumber,PolicyNumber,Status,Underwriter,Division,BrokerCity,TAName,Branch,FirstNamedInsuredAddress,FirstNamedInsured,ProjectAddress")] Project project)
{
if (ModelState.IsValid)
{
if (project.ProjectID <= 0)
{
db.Projects.Add(project);
}
else
{
db.Entry(project).State = EntityState.Modified;
}
db.SaveChanges();
return RedirectToAction("Create", new { sub_num = project.SubmissionNumber });
}
var model = new ProjectViewModel()
{
Project = db.Projects.Find(project.ProjectID),
States = GetSelectListItems(GetAllStates()),
Branches = GetSelectListItems(GetAllBranches()),
Divisions = GetSelectListItems(GetAllDivisions()),
ProjectTypes = GetSelectListItems(GetAllProjectTypes()),
Statuses = GetSelectListItems(GetAllStatuses()),
ReadOnly = false,
Cleared = false,
EditMode = false
};
return View("Maintenance", model);
}
我的问题在于区分哪个按钮将浏览器发送到提交方法。我提出了一些不同的可能性,但我不确定它们中是否有可能(我不认为它们是这样):
首先创建一个布尔模型属性,在提交后页面应该关闭时为true,否则为false。然后我可以将我的RedirectToAction包装在if语句中,如下所示:
if (Model.Done) {
return JavaScript("window.close();");
}
else
{
return RedirectToAction("Create", new { sub_num = project.SubmissionNumber });
}
但我不知道如何在点击按钮时设置此属性。我不认为这是可能的,所以我不能这样做,但如果我错了,请纠正我。
另一种可能性是在单击按钮时将参数传递给操作,但在<button type="submit"></button>
时我不知道如何执行此操作。
有没有人有任何建议?谢谢!
答案 0 :(得分:0)
希望这可以帮到你
您可以设置按钮的名称。如果单击该按钮,我们就可以获得单击的按钮。
在Create.cshtml中
<button type="submit" id="Create" name="Create"></button>
<button type="submit" id="Close" name="Close"></button>
在Controller.cs中
Public ActionResult Create(string name){
if(name="Create")
{
//here code for create button
return RedirectToAction("Create", new { sub_num =project.SubmissionNumber });
}
if(name="Close")
{
//heere code for close button
return JavaScript("window.close();");
}
}