1 つのページに複数のフォームがあり、そのページは 1 つのモデルを継承しています。すべてのフォーム送信には共通の値が必要です。したがって、共通の値は隠しフィールドに格納されます。非表示フィールドはグローバル、つまりすべてのフォームの外に保持されますが、私の問題は、フォームを送信するたびに、その非表示フィールドが空になることです@Html.HiddenfieldFor(m=>m.FkId)
。public string FkId{get;set;}
この状況をどのように処理するか。フォームの1つに非表示フィールドを保持すると、それはコントローラーに送信されますが、保持したフォーム送信に対してのみです。しかし、そのプロパティを一度設定して、すべてのフォーム送信で使用できるようにしたい.助けてください. どうすればこの問題を解決できますか
関連するコード
<div id="tabs">
<ul>
<li><a href="#tabs-1">Nunc tincidunt</a></li>
<li><a href="#tabs-2">Proin dolor</a></li>
<li><a href="#tabs-3">Aenean lacinia</a></li>
</ul>
<div id="tabs-1">
@using (Ajax.BeginForm("Evaluation","SaveTab1"{new AjaxOptions { Onsucess= "DisplayMessage" }))
{
@Html.HiddenFieldfor(m=>m.fkID)
<input type="Submit" id="btnTab1" value="Submit" onclick="CheckUser();"/>
}
</div>
<div id="tabs-2">
@using (Ajax.BeginForm("Evaluation","SaveTab2"{new AjaxOptions { Onsucess= "DisplayMessage" }))
{
@Html.HiddenFieldfor(m=>m.fkID)
<input type="Submit" id="btnTab2" value="Submit" />
}
</div>
<div id="tabs-3">
@using (Ajax.BeginForm("Evaluation","SaveTab3"{new AjaxOptions { Onsucess= "DisplayMessage" }))
{
@Html.HiddenFieldfor(m=>m.fkID)
<input type="Submit" id="btnTab3" value="Submit" />
}
</div>
</div>
<script type="text/javascript">
function DisplayMessage(Json)
{
alert( $("#fkID").val(Json.hdn));
// and Alert is showing the value
$("#fkID").val(Json.hdn);
}
</script>
コントローラーには次のものがあります。
public ActionResult SaveTab1(Model obj)
{
tbl ob =new tbl();
ob.FkId=Obj.fkID;
// after saving, I return
return json(new{hdn=Obj.fkID})
}
public ActionResult SaveTab2(Model obj)
{
tbl ob =new tbl();
ob.FkId=Obj.fkID;
//after saving, I return
return json(new{hdn=Obj.fkID})
}
タブ 3 も同様ですが、残念ながら非表示のフィールドは最初のフォーム送信時にのみ表示されます。次に、値を返してjsonで表示し、隠しフィールドプロパティを再度設定しますが、2番目のフォームではnullになります。助けてください