提交与提交&关闭按钮

时间:2017-06-22 13:50:21

标签: asp.net asp.net-mvc razor

在我的"创建"查看我的模特,我喜欢"提交"按钮以及"提交&关闭"按钮。我正在查看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>时我不知道如何执行此操作。

有没有人有任何建议?谢谢!

1 个答案:

答案 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();");
 }
 }