2012-03-24 4 views
2

jQueryモーダルダイアログを読み込むページがあります。モーダルにはフォームが含まれています。私はPartialViewを返す場合は、ページがちょうどここ 戻り値MVC 3のjQueryダイアログに戻ります。

はビュー

である(ただ、モーダルであることを意図している)ダイアログフォームの内容をロードし、それがロードされるようにどのように私は、モーダルでエラーを返すことができます
<span><a id="end" href="#">Launch End Dialog</a> </span> 



<div id="end-dialog" class="dialog"> 
    <div id="end-inner"></div> 
    <hr /> 
</div> 

<script type="text/javascript"> 
    $(function() { 


    var endDialog = $("#end-care-plan-dialog").dialog({ 

    }); 

    $("#end").click(function() { 
     endDialog.dialog('close'); 
    }); 

    $('#end').click(function() { 
     $('#end-inner').load(baseUrl + "/End", $.param({ id: '@Model.id' }), 
       function() { 
       endDialog.dialog('open'); 
       }); 
    }); 
    }); 
</script> 

はHERESに私のコントローラ

[HttpPost] 
public ActionResult End(EndVM end) 
{ 
    if (ModelState.IsValid) 
    { 
    //do work 

    } 

    //return so that pop up now has validation errors 
    return PartialView(end); 
} 

注 - jquery.validateとjquery.validate.unobstrusiveがビュー

にロードされているおかげで、これは理にかなって願っています。

更新:サンディエゴ - これは、フォーム(それはmoalにロードされる)を含有部分図である

@using (Html.BeginForm<EndController>(c => c.End(@Model.Id))) 

{@ Html.HiddenFor(M => m.Id) @html Html.EditorFor @ .DropDownListFor(M => m.EndReasonId、RefData.EndReasons) 他の理由(M => m.EndReasonOther) @ Html.ValidationMessageFor(M => m.EndReasonOther) @( Html.ActionLi NK(Model.Id @ C => c.Edit()、 "キャンセル"))@ Html.SubmitButton( "終了"、 "終了")私はあなたのコードを適応させるところ }

はありますか?

ありがとうございました

+0

ajaxを使用すると、よりシンプルにすることができます –

答えて

1

意味があります。フォームがAJAXを介して送信されていることを確認する必要があります。そうしないと、ページ全体が更新されます。既定の動作をオーバーライドするには、フォームのsubmitイベントのハンドラーが必要です。あなたのフォームをアサインするのはmyFormです。

$('#myForm').submit(function() { // catch the form's submit event 
    $.ajax({ 
     data: $(this).serialize(), // get the form data 
     type: $(this).attr('method'), // GET or POST 
     url: $(this).attr('action'), // the file to call 
     success: function(response) { // on success.. 
      $('#end-inner').html(response); // update the DIV 
     } 
}); 
return false; // cancel original event to prevent form submitting 
}); 
関連する問題