2012-04-24 5 views
2

취업 기록 목록이 있습니다. 부분보기를 사용하여 동일한 페이지에서 취업 기록을 추가 할 수도 있습니다.부분 뷰에서 컨트롤러로 데이터 제출 MVC

Heres는 레코드 목록을 부분적으로 볼 수 있고 모달 팝업에 나타나는 새 레코드를 추가 할 수 있습니다.

<h2>Employment Records</h2> 

    @{Html.RenderPartial("_employmentlist", Model);}        

<p> 
<a href="#regModal" class="btn btn_b" rel="fancyReg">Add New Record</a> 
</p> 

<div style="display:none"> 
    <div id="regModal"> 
       @{Html.RenderPartial("_AddEmployment", new ViewModelEmploymentRecord());}  

         </div> 
        </div> 

은을 heres 부분보기

@using (Html.BeginForm("AddEmployment, Application")) 
{     
@Html.ValidationSummary(true) 

<div class="formEl_a"> 

<fieldset> 
    <legend></legend> 

    <div class="sepH_b"> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.employerName) 
      </div> 

     etc....etc.... 

</fieldset> 

</div> 
    <p> 
     <input type="submit" class="btn btn_d" value="Add New Record" /> 

    </p> 


} 

및 heres는 내 응용 제어기 _AddEmployment.cshtml :

[HttpPost] 
    public ActionResult AddEmployment(ViewModelEmploymentRecord model) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 

       Add Data..... 
      } 
     } 
     catch 
     { 

     } 

     return View(model); 
    } 

다음 HTML 폼에 대해 생성 컴파일 :

<form action="/Application/Employment?Length=26" method="post"> 

길이가 길어 지나요? 대신 Employment 컨트롤러를 호출하고 있습니까? 모든

희망은 분명하다 ....

질문 ONE : 나는 부분보기 내에서 제출 버튼을 클릭하면이 데이터를 추가 지정된 컨트롤러로 이동하지 않습니다. 아무도 내가 잘못 가고있는 것을 볼 수 있습니까?

질문 2 : 내가이 작업을하게되면 취업 기록부를 새로운 기록으로 업데이트하고 싶습니다 ... 나는 올바른 방향으로 가고 있습니까? 어떤 팁 감사.

+0

질문 1 : 앱의 catch 블록에 무엇인가 넣었습니까? 컨트롤러, 약간의 통찰력을 제공하겠습니까? – jamesTheProgrammer

+0

1) 매직 문자열을 사용하는 시점에서'Html.BeginForm'을 사용하지 않고 수동으로'

'태그를 직접 작성하십시오. 먼저 시도하고 조치 방법에 게시 할 수 있는지 확인하십시오. 2)'ModelState.IsValid' 플래그를 검사한다고 가정하십니까? DataAnnotations를 사용하는 경우에만 유용 할 것입니다. – Tejs

+0

페이지를 컴파일하면 양식 태그가 ok 를 생성합니다. 그것은 잘못된 컨트롤러 그러나 addEmployment 대신 고용으로가는 것 같다 ?? 필자는이 정보로 메인 포스트를 업데이트했습니다. – Dez79

답변

8

답변 1 : 먼저 시도해보고 컨트롤러에 해당되는지 알려주십시오.

@using (Html.BeginForm("AddEmployment", "Application", FormMethod.Post)) 

대답 2 : 고용 목록을 업데이트하려면, 당신이 다음 고용 목록을 같은 페이지 나에 DB에서 데이터를 요구하는 다른 페이지에 표시가 데이터베이스에 모델을 저장할 것입니다 가정 것 표시되는리스트 또는 테이블

편집 : 양식 속성이 적용되지 않은 것처럼 보입니다. 귀하의 employment.cshtml에 대해서는 개인적으로 @Html 문을 {}로 사용하지 않습니다. 당신은 당신의 오류가 나는 그 닫는 따옴표 문제를 일으키는 것입니다 누락

@using (Html.BeginForm("AddEmployment, Application", FormMethod.Post)) 

로 쓸 경우에만 발생하기 때문에 내가 위에서 언급 한 일을해서는 안된다.

+0

사이드 노트에. 나는 일반적인 시나리오에서 catch catch를 사용하지 않을 것이다. 발생할 수있는 오류 만 잡습니다. 가능한 한 많이 지정하십시오. null 예외와 같은. 그게 꽤 일반적인 예외 유형입니다. 잡히지 않는 예외에 대해 걱정하는 경우 이러한 문제를 처리하는 가장 좋은 방법은 사이트에서 ELMAH와 같은 것을 넣어 이러한 오류를 포착하고 기록하는 것입니다. –

+0

양식 메서드를 추가 할 수 없습니다. 다음 오류가 발생합니다. **** 오류 \t 'System.Web.Mvc.HtmlHelper '에 'BeginForm'에 대한 정의가없고 최상의 확장 메서드 오버로드 'System.Web.Mvc.Html.FormExtensions.BeginForm (System.Web.Mvc.HtmlHelper, string, string)'에 잘못된 인수가 있습니다. \t Views \ Application \ _AddEmployment.cshtml *** – Dez79

+0

이 부분을 변경하십시오. code :'("AddEmployment, Application", FormMethod.Post)'to this :'("AddEmployment", "Application", FormMethod.Post)'그러면 더 이상 오류가 발생하지 않고 양식이 올 바릅니다. 제어 장치. * 최고 감사합니다 * –

0

당신은 내가 당신이

+0

응용 프로그램 컨트롤러에서 AddEmployment 작업을 호출하려고합니다. 대답의 두 번째 부분은 내가 가지고있는 것과 동일합니까? – Dez79

+0

Im 그냥 다른 답변을 읽고 나서 동일하지 않습니다 .. 감사합니다! – Dez79

+0

@ Dez79 나는 당신이 따옴표를 닫지 않았 음을 보여주었습니다. 그래서 그저 2 개의 매개 변수로 행동하는 것이 아니라 행동으로 읽는 것입니다. – Manatherin

0

jQuery 코드 @using (Html.BeginForm("AddEmployment", "Application")) 의미 생각이이 작업을 "AddEmployment, Application"라고 호출하면된다하려고 @using (Html.BeginForm("AddEmployment, Application"))을 넣어 가지고 : 그 사용

window.jQuery(document).ready(function() { 
    $('#btnsave').click(function() { 

     var frm = $("form"); 
     var data = new FormData($("form")[0]); 
     debugger; 
     $.ajax({ 
      url: '/Home/Update', 
      type: "POST", 
      processData: false, 
      data: data, 
      dataType: 'json', 
      contentType: false, 
      success: function (response) { 
       alert(response); 
      }, 
      error: function (er) { } 
     }); 
     return false; 
    }); 

}); 

컨트롤러 코드

[HttpPost] 
    public JsonResult Update(Generation obj) 
    { 
     if (ModelState.IsValid) 
     { 
      return Json("done"); 
     } 
     else 
     { 
      return Json("error create"); 
     } 
    } 

을 코드 jquery를 사용하여 양식을 게시하고 jsonresult에서 응답을 받으십시오.

관련 문제