2017-06-22 19 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を返します。それから私はそうのようなif文で私RedirectToActionをラップすることができます

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- in-one-formである。たぶん彼らはあなたを助けることができます。私はあなたがプッシュしたボタンのいくつかの種類のJSの決定を必要としない私の頭の上から方法を考えることができません。 – Hopeless

答えて

0

希望これはあなたが

あなたはbutton.Ifの名前は、我々がクリックされたボタンを取得することができ、そのボタンをクリックして設定することができ助けるかもしれません。 Create.cshtmlで

Controller.csで
<button type="submit" id="Create" name="Create"></button> 
<button type="submit" id="Close" name="Close"></button> 

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();"); 
} 
} 
関連する問題