2017-06-22 154 views
0

在我的模型的“创建”视图中,我想要一个“提交”按钮以及“提交&关闭”按钮。我正在看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); 
} 

我的问题带有差分哪个按钮发送的浏览器提交方法。我想出了几种不同的可能性,但我不确定它们中的任何一个是否可能(我不认为它们是可能的):

首先创建一个布尔模型属性,当页面提交后应关闭,否则为false。然后,我可以换我RedirectToAction在if语句,像这样:

if (Model.Done) { 
    return JavaScript("window.close();"); 
} 
else 
{ 
    return RedirectToAction("Create", new { sub_num = project.SubmissionNumber }); 
} 

但我不知道我怎么能设置按钮,点击这个属性。我不认为这是可能的,所以我不能这样做,但纠正我,如果我错了。

另一种可能性是在单击按钮时将参数传递给动作,但当它是<button type="submit"></button>时,我不知道如何执行此操作。

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

+0

检查出这个问题的答案https://stackoverflow.com/questions/547821/two-submit-buttons-在一形式。也许他们可以帮助你。我无法想出一个摆脱我头顶的方式,这不需要你按下哪个按钮的某种JS决定。 – Hopeless

回答

0

希望这可以帮助你

您可以可以设置button.If的名称上点击按钮,然后我们可以得到被点击了哪个按钮。

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