2014-05-19 4 views
1

MVC4 및 Entity 프레임 워크 5를 사용하는 초보자입니다. 사용자가 입력 한 acctCode가 데이터베이스에 있는지 여부를 확인하고 팝업을 제공합니다. acctCode가 존재하면 뷰에 msg. 내가 뭘하려고하는 것은전체 페이지를 새로 고치지 않고 컨트롤러에서 팝업 메시지를 표시합니다.

내 컨트롤러 코드

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(AccountCode accountcode) 
    { 
     int count = db.AccountCodes.Count(model => model.acctCode==accountcode.acctCode); 
     if (ModelState.IsValid) 
     { 
      if (count == 1) 
      { 
       TempData["msg"] = "<script>alert('Account Code already exist');</script>"; 
      } 
      else 
      { 
       db.AccountCodes.Add(accountcode); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
     } 

     ViewBag.clusterAcct = new SelectList(db.ClusterAccounts, "clusterAcct", "description", accountcode.clusterAcct); 
     return View(accountcode); 
    } 

내보기

@model MvcRome.Models.AccountCode 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

<script type="text/javascript"> 
    $(function() { 
     $("#tabs").tabs(); 
    }); 
</script> 

@Html.Raw(TempData["msg"]) 


@using (Ajax.BeginForm("Create", "AccountCodes", new { ReturnUrl = ViewBag.ReturnUrl },new AjaxOptions{HttpMethod="Post"}, new { @class = "bootstrap-frm" })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
<fieldset> 
    <legend>Account</legend> 
    <br /> 

    <table> 
     <tr> 
      <td> 
       @Html.LabelFor(model => model.acctCode) 
      </td> 
      <td> 
       @Html.EditorFor(model => model.acctCode) 
      </td> 

      <td> 
       @Html.LabelFor(model => model.shortCode) 
      </td> 
      <td> 
       @Html.TextBoxFor(model => model.shortCode, new { style = "width:50px" }) 
      </td> 
      <td>@Html.ValidationMessageFor(model => model.shortCode)</td> 
    </tr> 
    <tr> 
      <td>&nbsp;</td> 
      <td>@Html.ValidationMessageFor(model => model.acctCode)</td> 
    </tr> 
</table> 


    <fieldset> 
     <legend >Groups</legend> 
     <table> 
      <tr> 
       <td> 

        @Html.RadioButtonFor(model => model.groups, "Parts", new { id = "Parts", @onClick = "grpPartsTaxClick();", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("Parts", "Parts", new { style = "padding-right:20px" }) 
        @Html.RadioButtonFor(model => model.groups, "Labor", new { id = "Labor", @onClick = "grpLaborClick();", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("Labor", "Labor", new { style = "padding-right:20px" }) 
        @Html.RadioButtonFor(model => model.groups, "Tax", new { id = "Tax", @onClick = "grpPartsTaxClick();", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("Tax", "Tax", new { style = "padding-right:20px" }) 
        @Html.RadioButtonFor(model => model.groups, "Other", new { @checked = "checked", id = "Other", @onClick = "grpOtherClick();", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("Other", "Other", new { style = "padding-right:20px" }) 
        @Html.ValidationMessageFor(model => model.groups) 
       </td> 
      </tr> 
     </table>  

    </fieldset> 

    <fieldset> 
     <legend >Group Type</legend> 
     <table> 
      <tr> 
       <td> 

        @Html.RadioButtonFor(model => model.groupType, "None", new { @checked = "checked", id = "GTNone", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("GTNone", "None", new { style = "padding-right:20px;font-size:small" }) 
        @Html.RadioButtonFor(model => model.groupType, "Labor", new { id = "GTLabor", @disabled = true, @style = "width:auto;background:none;border:none" }) 
        @Html.Label("GTLabor", "Labor", new { style = "padding-right:20px;font-size:small" }) 
        @Html.RadioButtonFor(model => model.groupType, "Refinishing", new { id = "GTRefinishing", @disabled = true, @style = "width:auto;background:none;border:none" }) 
        @Html.Label("GTRefinishing", "Refinishing", new { style = "padding-right:20px;font-size:small" }) 
        @Html.RadioButtonFor(model => model.groupType, "Sublet", new { id = "GTSublet", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("GTSublet", "Sublet", new { style = "padding-right:20px;font-size:small" }) 
        @Html.RadioButtonFor(model => model.groupType, "Miscellaneous", new { id = "GTMiscellaneous", @style = "width:auto;background:none;border:none" }) 
        @Html.Label("GTMiscellaneous", "Miscellaneous", new { style = "padding-right:20px;font-size:small" }) 

        @Html.ValidationMessageFor(model => model.groupType) 
       </td> 
      </tr> 
     </table> 
    </fieldset> 

    <table> 
     <tr> 
      <td> 
       @Html.LabelFor(model => model.descrp) 
      </td> 
      <td> 
       @Html.EditorFor(model => model.descrp) 
      </td> 
      <td> 
       @Html.ValidationMessageFor(model => model.descrp) 
      </td> 
     </tr> 
     <tr> 
      <td> 
       @Html.LabelFor(model => model.shortDescrp) 
      </td> 
      <td> 
       @Html.EditorFor(model => model.shortDescrp) 
      </td> 
      <td> 
       @Html.ValidationMessageFor(model => model.shortDescrp) 
      </td> 
     </tr> 
    </table> 
    <div id="tabs"> 

     <ul> 
      <li><a href="#tabs-1">Accounts Default</a></li> 
      <li><a href="#tabs-2">Cluster Account</a></li> 
      <li><a href="#tabs-3">Quick Books/Acc Pac</a></li> 
      <li><a href="#tabs-4">ERA Accounts</a></li> 
      <li><a href="#tabs-5">Schedule/Forecasting</a></li> 
     </ul> 
     <div id="tabs-1"> 
      <table> 
       <tr> 

        <td style="white-space:nowrap"> 
         @Html.LabelFor(model => model.ADBalanceAcct) 
        </td> 
        <td> 
         @Html.EditorFor(model => model.ADBalanceAcct) 
        </td> 

        <td style="white-space:nowrap"> 
         @Html.LabelFor(model => model.ADLaborOpt) 
        </td> 
        <td> 
         @Html.TextBoxFor(model => model.ADLaborOpt) 
        </td> 

       </tr>  



       <tr> 
        <td> 
         @Html.LabelFor(model => model.ADRate) 
        </td> 
        <td colspan="3"> 
         @Html.EditorFor(model => model.ADRate) 
        </td> 

       </tr> 

       <tr> 
        <td> 
         @Html.LabelFor(model => model.ADCostFact) 
        </td> 
        <td> 
         @Html.EditorFor(model => model.ADCostFact) 
        </td> 

        <td colspan="1"> 
         @Html.CheckBoxFor(model => model.ADAutoCost) 
         @Html.LabelFor(model => model.ADAutoCost) 
        </td> 
        <td > 

        </td> 
       </tr> 


       <tr> 
        <td> 
         @Html.LabelFor(model => model.ADBarcode) 
        </td> 
        <td colspan="3"> 
         @Html.EditorFor(model => model.ADBarcode) 
        </td> 

       </tr> 
      </table><br /> 
    <table> 
     <tr> 
      <td> 
       <fieldset> 
        <legend >Account Type</legend> 
        <br /> 

        <table> 
         <tr> 
          <td> 
           @Html.RadioButtonFor(model => model.ADAcctType, "Credit", new { @checked = "checked", id = "Credit", @style = "width:auto;background:none;border:none" }) 
           @Html.Label("Credit", "Credit", new { style = "padding-right:20px;font-size:small" }) 
          </td> 
         </tr> 
         <tr> 
          <td> 
           @Html.RadioButtonFor(model => model.ADAcctType, "Debit", new { id = "Debit", @style = "width:auto;background:none;border:none" }) 
           @Html.Label("Debit", "Debit", new { style = "padding-right:20px;font-size:small" }) 
          </td> 
         </tr> 
        </table> 
       </fieldset> 
      </td> 
      <td>&nbsp;</td> 
      <td> 
       <fieldset> 
        <legend >Tax Flags</legend><br /> 
        <table> 
         <tr> 
          <td> 
           @Html.CheckBoxFor(model => model.SalesTA) 
           @Html.LabelFor(model => model.SalesTA, new { style = "padding-right:20px;font-size:small" }) 
          </td> 
          <td>&nbsp;</td> 
          <td> 
           @Html.CheckBoxFor(model => model.TaxAuth3) 
           @Html.LabelFor(model => model.TaxAuth3, new { style = "padding-right:20px;font-size:small" }) 
          </td> 
         </tr> 
         <tr> 
          <td> 
           @Html.CheckBoxFor(model => model.PST) 
           @Html.LabelFor(model => model.PST, new { style = "padding-right:20px;font-size:small" }) 
          </td> 
          <td>&nbsp;</td> 
          <td>   
           @Html.CheckBoxFor(model => model.TaxAuth4) 
           @Html.LabelFor(model => model.TaxAuth4, new { style = "padding-right:20px;font-size:small" }) 
          </td> 
         </tr> 
         <tr> 
          <td> 
           @Html.CheckBoxFor(model => model.TaxAuth5) 
           @Html.LabelFor(model => model.TaxAuth5, new { style = "padding-right:20px;font-size:small" }) 
          </td> 
         </tr> 
        </table> 
       </fieldset> 
      </td> 
     </tr> 
    </table> 
     </div> 

     <div id="tabs-2"> 
      <fieldset> 
       <legend>Cost Cluster Accounts</legend> 
       <br /> 
       <div> 
        @Html.LabelFor(model => model.CAClusterCredit) 
        @Html.DropDownList("clusterAcct", "[Select]") 
        @Html.ValidationMessageFor(model => model.CAClusterCredit) 
       </div> 
       <br /> 
       <div> 
        @Html.LabelFor(model => model.CAClusterDebit) 
        @Html.DropDownList("clusterAcct", "[Select]") 
        @Html.ValidationMessageFor(model => model.CAClusterDebit) 
       </div> 
       <br /> 
      </fieldset> 
      <fieldset> 
       <legend>Income Cluster Accounts</legend> 
       <br /> 
       @Html.LabelFor(model => model.CABilled) 
       @Html.DropDownList("clusterAcct", "[Select]") 
      </fieldset> 
     </div> 
     <div id="tabs-3"> 
      <fieldset> 
       <legend>Quick Books</legend> 
       <table> 
        <tr> 
         <td> 
         @Html.LabelFor(model => model.QAClassName) 
         </td> 
         <td> 
         @Html.EditorFor(model => model.QAClassName) 
         </td> 
         <td> 
         @Html.ValidationMessageFor(model => model.QAClassName) 
         </td> 
        </tr> 
        <tr> 
         <td> 
         @Html.LabelFor(model => model.QACostInventory) 
         </td> 
         <td> 
         @Html.EditorFor(model => model.QACostInventory) 
         </td> 
         <td> 
         @Html.ValidationMessageFor(model => model.QACostInventory) 
         </td> 
        </tr> 
        <tr> 
         <td> 
         @Html.LabelFor(model => model.QACostCredit) 
         </td> 
         <td> 
         @Html.EditorFor(model => model.QACostCredit) 
         </td> 
         <td> 
         @Html.ValidationMessageFor(model => model.QACostCredit) 
         </td> 
        </tr> 
        <tr> 
         <td> 
         @Html.LabelFor(model => model.QACostDebit) 
         </td> 
         <td> 
         @Html.EditorFor(model => model.QACostDebit) 
         </td> 
         <td> 
         @Html.ValidationMessageFor(model => model.QACostDebit) 
         </td> 
        </tr> 
       </table> 
      </fieldset> 
      <fieldset> 
       <legend>AccPac</legend> 
       <div> 
        @Html.LabelFor(model => model.QASegementNo) 
        @Html.EditorFor(model => model.QASegementNo) 
        @Html.ValidationMessageFor(model => model.QASegementNo) 
       </div> 
       <br /> 
       <div> 

        @Html.CheckBoxFor(model => model.QAExportAcctCode) 
        @Html.LabelFor(model => model.QAExportAcctCode) 

        @Html.CheckBoxFor(model => model.QAExportAllSeg) 
        @Html.LabelFor(model => model.QAExportAllSeg) 


        @Html.CheckBoxFor(model => model.QAExportAcctCodeShopNo) 
        @Html.LabelFor(model => model.QAExportAcctCodeShopNo) 
       </div> 

      </fieldset> 
     </div> 
     <div id="tabs-4"> 
      <fieldset> 
       <legend>Account Type</legend><br /> 
       <table> 
        <tr> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "None", new { @checked = "checked", id = "ATNone", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATNone", "None", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "Body", new { id = "ATBody", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATBody", "Body", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "Paint", new { id = "ATPaint", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATPaint", "Paint", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "Frame", new { id = "ATFrame", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATFrame", "Frame", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 

        <tr> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "Mechanical", new { id = "ATMechanical", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATMechanical", "Mechanical", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "Structural", new { id = "ATStructural", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATStructual", "Structural", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "User 1", new { id = "ATUser1", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATUser1", "User 1", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "User 2", new { id = "ATUser2", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATUser2", "User 2", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "User 3", new { id = "ATUser3", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATUser3", "User 3", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "User 4", new { id = "ATUser4", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATUser4", "User 4", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "User 5", new { id = "ATUser5", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATUser5", "User 5", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAAcctType, "User 6", new { id = "ATUser6", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ATUser6", "User 6", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
       </table> 

      </fieldset> 
      <fieldset> 
       <legend>ERA GOG Type</legend><br /> 
       <table> 
        <tr> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAGOGType, "None", new { @checked = "checked", id = "ERANone", @onClick = "ERANoneClick();", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ERANone", "None", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAGOGType, "Frieght", new { id = "ERAFrieght", @onClick = "ERAClick();", @class = "groupsRadio", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ERAFrieght", "Frieght", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAGOGType, "Gas/Oil/Grease", new { id = "ERAGas/Oil/Grease", @onClick = "ERAClick();", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ERAGas/Oil/Grease", "Gas/Oil/Grease", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAGOGType, "PaintMaterials", new { id = "ERAPaintMaterials", @onClick = "ERAClick();", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ERAPaintMaterials", "Paint Materials", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
         <td> 
          @Html.RadioButtonFor(model => model.ERAGOGType, "ShopSupplies", new { id = "ERAShopSupplies", @onClick = "ERAClick();", @style = "width:auto;background:none;border:none" }) 
          @Html.Label("ERAShopSupplies", "Shop Supplies", new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td colspan="4"> 
          @Html.LabelFor(model => model.ERAGOGCode) 
          @Html.TextBoxFor(model => model.ERAGOGCode, new { @disabled = true }) 
         </td> 
        </tr> 
       </table> 
      </fieldset> 
     </div> 
     <div id="tabs-5"> 
      <fieldset> 
       <legend>Select One or More Tasks(Setup Up as Multiple Accounts in Forecasting)</legend><br /> 
       <table> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.BLU_TEAR) 
          @Html.LabelFor(model => model.BLU_TEAR, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.BUFF) 
          @Html.LabelFor(model => model.BUFF, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.SUP_APRV) 
          @Html.LabelFor(model => model.SUP_APRV, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.REASY) 
          @Html.LabelFor(model => model.REASY, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.BODY) 
          @Html.LabelFor(model => model.BODY, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.SUBLET) 
          @Html.LabelFor(model => model.SUBLET, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.FRAME) 
          @Html.LabelFor(model => model.FRAME, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.MNTBAL) 
          @Html.LabelFor(model => model.MNTBAL, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.MECH) 
          @Html.LabelFor(model => model.MECH, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.ALIGN) 
          @Html.LabelFor(model => model.ALIGN, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.A_CUTIN) 
          @Html.LabelFor(model => model.A_CUTIN, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.DETAIL) 
          @Html.LabelFor(model => model.DETAIL, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.B_PREP) 
          @Html.LabelFor(model => model.B_PREP, new { style = "padding-right:20px;font-size:small" }) 
         </td> 

         <td> 
          @Html.CheckBoxFor(model => model.Q_C) 
          @Html.LabelFor(model => model.Q_C, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
        <tr> 
         <td> 
          @Html.CheckBoxFor(model => model.C_PAINT) 
          @Html.LabelFor(model => model.C_PAINT, new { style = "padding-right:20px;font-size:small" }) 
         </td> 
        </tr> 
       </table> 
      </fieldset> 
     </div> 
    </div> 


    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 

} ' ..입니다하지만 내 전체 페이지를 html.raw 사용하여 새로 가져옵니다. 전체 페이지를 새로 고치는 것을 피하기 위해 더 나은 해결책은 무엇입니까? 사전

+0

양식 게시 페이지 새로 고침을 중지 하시겠습니까? –

+0

예 @EhsanSajjad acctCode가 팝업 메시지를 표시하는 동안 존재하면 msg – Coder

+0

'Html.BeginForm' 대신''Ajax.BeginForm'' 할 수 있습니다. 페이지 새로 고침없이 ajax를 통해 데이터를 게시합니다. –

답변

1

에서

덕분에 당신은 단지 그것의 응답을 기반으로 팝업 메시지를 버튼 클릭 이벤트에 Ajax 호출을 보내고 및 표시 페이지를 새로 고침하지 않으려면.

$("#validateButton).click(function(){ 

    // send ajax call to CheckKey action with key parameter and on success function 
    // show popup. 
    $.ajax({ 
     // all ajax code 
     success:function(result){ 
     if(result !="validkey") 
     { 
     alert("popup); 
     } 
     } 
    }); 

}); 

와 컨트롤러 액션이 같은해야 - 당신이 jQuery를 다음 버튼 아약스 호출이 같은해야 사용한다고 가정 할 수 있습니다.

[HttpPost] 
    public JsonResult CheckKey(String key) 
    { 
     // do here databse operation to check. 
     if(key == "foo") 
     { 
     return Json("Key already present. try for different."); 
     } 
     else 
     { 
     return Json("validkey"); 
     } 
} 
+0

여기에서 카운트를 사용하고 있습니다. – Coder

+0

json 결과에서 카운트를 반환 할 수 있습니다. return Json (count); 또는 카운트를 기반으로 Json에게 다른 것을 돌려 줄 수 있고 그 결과에 따라 Ajax 성공 함수를 수정할 수 있습니다. –

+0

나는 어떻게 내 견해를 반환합니까 ?? – Coder

관련 문제