[asp.net-mvc]输入隐藏的控件 doesn´t 保持了他回发之间的值

发布时间: 2017/3/25 2:25:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在使用 ASP.NET MVC 的网页。 我有以下输入隐藏的地方︰

<%=Html.Hidden("inputHiddenSelectedMenuId") %>

我在这个 js 函数中设置它的值︰

function SetSelectedMenu(id) {
     $('#inputHiddenSelectedMenuId').val(id);         
 }

后在我想要使用中隐藏的输入设置的值,但该值,js 初始化函数中的回发是空字符串。

$(document).ready(function() {

     $('div.nav > a').removeClass('active');
     var id = $('#inputHiddenSelectedMenuId').val();
     if (id != "") {
         $("#" + id).addClass('active');
     }         
 });

谁能给提示为什么这样?

解决方法 1:

你正在试图读取在 javascript 中输入的值。当您单击一个窗体上的按钮并它的回发时重新加载页面时和 javascript 代码重新运行每次加载页面。如果你所做的一切读取的值输入在 javascript 中你不需要执行回发。

$('#inputHiddenSelectedMenuId').bind('click', function ()
{
     var id = $('#inputHiddenSelectedMenuId').val();
     // do stuff with it.
});

单击函数将执行无需回发。

现在,如果你尝试开机自检后读取在 MVC 中的隐藏字段中的内容然后这是一个不同的问题。你将不得不把它从表单数据通过模型绑定 (或阅读直接通过 Request.Form [] 集合。

public ActionResult SomeActionToPostTo(int inputHiddenSelectedMenuId)
{
     //model binding should find the form field called inputHiddenSelectedMenuId and populate the argument in this method with it's value. If it's not an integer then just change the type of the argument to the appropriate type.
}
官方微信
官方QQ群
31647020