2011-06-18 12 views
0

私が取り組むシステムはContactフォームテンプレートのようなテンプレートを挿入してデータベースに保存するCMSです。このテンプレートは、データを処理するためにサーバー側に対してコーディングされています。フォームのネストに問題があるようなtextareaの場合はAjaxコール

は今、すべてのテンプレートを挿入しており、より保存されたフォーム内の私の「contentDivは」より

$(function() { 
    $("form#first").submit(function (e) { 
     e.preventDefault(); 

     var viewmodel = { 
      Id: $("#someId").val(), 
      Html: $("#contentDiv").val() 
     }; 

     $.ajax({ 
      url: $(this).attr("action"), 
      type: "POST", 
      data: JSON.stringify(viewmodel), 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      beforeSend: function() { $("#status").fadeIn(); }, 
      complete: function() { $("#status").fadeOut(); }, 
      success: function (data) { 
       var message = data.Message; 

      }, 
      error: function() { 

      } 
     }); 
    }); 
}); 

予告として保存されるフォームの上

@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { id = "first" })) 
{ 
    @Html.Hidden("someId", @Model.PageId) 

} 

<div id="contentDiv" style="width:100%">@Html.Raw(Model.Html)</div> 

のように包まれたページwithintフォームタグに示しました。フォームタグにラップされた連絡先フォームをID =最初のフォーム内に入れ子にすることはできません。

ネスティングを形成するソリューションはありますか?。ない

よりも私の別の質問がある場合は

contentDivは、彼は文句を言わない、サーバーにcontentDivデータを投稿することができ、フォームが何のことはないだろうよりも、クライアントのブラウザはJavaScriptが無効になっている場合を意味formタグに包まれていませんつかいます。

どうすればよいですか?

私はテンプレートを挿入した後の構造は、フォーム

@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { id = "first" })) 
    { 
<form id="contactform" action="/Home/Email" method="post" >     
    <div class="clear" style="padding-bottom:10px;"></div> 

    <div class="formCaption">Full Name</div> 
    <div class="formField"><input id="fullName" name="fullName" class="standardField" /></div> 




    <div><input id="sendBtn" value="Send" type="button" /></div> 
</form> 
} 

答えて

0

のネストされるよりもよりも、formタグの外にcontentDivを移動しない場合は、HTMLを外にする必要がありますなぜ私はあなたの説明から理解していませんでした形。 divの場合は.val()メソッドを使用しないでください。あなたは.html()を使用する必要があります。もちろん

var viewmodel = { 
    Id: $("#someId").val(), 
    Html: $("#contentDiv").html() 
}; 

を使用すると、クライアントのブラウザがJavaScriptをフォームが役に立たないだろう無効にしている場合、メインフォームの外側にあるHTMLをフェッチするためにJavaScriptを使用しているため。あなたは、メインフォーム内のhtmlを移動する場合にのみ、javascriptをせずに、この作品になります。私は、フォームの外にcontentDivを移動いけない場合

@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { id = "first" })) 
{ 
    @Html.HiddenFor(x => x.PageId) 
    @Html.HiddenFor(x => x.Html) 
    <input type="submit" value="Edit" /> 
} 

<!-- 
You could still keep the div for preview or something but don't make 
any use of it when submitting. 
--> 
<div id="contentDiv" style="width:100%"> 
    @Html.Raw(Model.Html) 
</div> 
+0

@Darinディミトロフは、更新された私の質問は、最下部に表示されます。 – Pirzada

+0

@pirzada、あなたのビューモデルのHTMLプロパティにもフォームが含まれることがあります。これはいつものケースですか?それらのフォームも実際に提出しますか?なぜあなたは最初のフォームと共にHTMLを提出したいのですか? IDを使用してデータベースから取得できませんか?もっと理にかなっているだろう。私があなたに提案した隠しフィールドはどうですか? –

+0

@Darin Dimitrov、私は内容が長くなる可能性があるので、ページ上のプレビューの混乱のために別のdivを使うことはできません。フォームタグがなくてもcontentDivコンテンツをサーバーに投稿できたらいつか? – Pirzada

関連する問題