【发布时间】:2013-10-13 04:36:38
【问题描述】:
我在一个页面中有多个表单,并且该页面继承了一个模型。每个表单提交都需要一个共同的值。因此,公共值存储在隐藏字段中。隐藏字段保持全局,即在所有表单之外,但我的问题是每当我提交表单时,该隐藏字段将变为空。隐藏字段是 @Html.HiddenfieldFor(m=>m.FkId) 并且这个 FkId 在模型中是字符串类型属性,即 @987654322 @ 。有人可以指导我如何处理这种情况。如果我在其中一个表单中保留隐藏字段,那么它将进入控制器,但仅用于我保留它的表单提交。但我希望该属性设置一次,并且可以在所有表单提交中使用。请帮助我。我该如何解决这个问题
一些相关代码
<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})
}
标签三类似,但不幸的是,隐藏文件仅适用于第一个表单提交。然后我通过 json 返回值以查看并再次设置隐藏字段属性,但是对于第二种形式,它为 null。请帮助
【问题讨论】:
-
Html.HiddenFieldFor是什么?你怎么连语法错误信息都没有?应该是Html.HiddenFor。
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor logic