【问题标题】:assigning value from js code to mvc razor's hidden field将 js 代码中的值分配给 mvc razor 的隐藏字段
【发布时间】:2015-11-20 11:48:09
【问题描述】:

如果我在 razor 视图中已经定义了隐藏字段,例如

@Html.HiddenFor(m => m.MyHiddenId)

如何从内联 js 代码中填充它

var someNr = 100;

如何将此 someNr 值分配给 m.MyHiddenId 属性?

【问题讨论】:

  • $('#MyHiddenId').val(someNr);

标签: javascript c# jquery .net asp.net-mvc


【解决方案1】:

@Html.HiddenFor 添加显式id 属性

@Html.HiddenFor(m => m.MyHiddenId, new { id = "hat" }) 

然后使用 jQuery:

var someNr = 100;
$('#hat').val(somNr); 

对于那些没有 jQuery 的人

document.getElementById("hat").value = somNr;

根据下面的答案,如果没有明确的 id,HiddenFor 会将属性 id 设置为 MyHiddenId。所以,这也可以:

var someNr = 100;
$('#MyHiddenId').val(someNr);

或者没有 jQuery:

document.getElementById("MyHiddenId").value = somNr;

【讨论】:

  • 为什么不使用“#MyHiddenId”?
【解决方案2】:

MVC 将给该字段一个 id 'MyHiddenId'

所以对于Jquery你可以这样设置:

$("#MyHiddenId").val(someNr);

【讨论】:

    【解决方案3】:

    首先你必须assign ID为你控制,你知道control ID at compile time

    @Html.HiddenFor(m => m.MyHiddenId, new { id = "MyHiddenId" })

    Jquery Code:-
    

    var someNr = 100;

    $('#MyHiddenId).val(somNr);

    JavaScript Code:-
    

    var someNr = 100;

    document.getElementById('MyHiddenId').value = somNr;

    【讨论】:

    • 为什么要将id 设置为与它已有的值完全相同的值? @Html.HiddenFor(m => m.MyHiddenId) 使用 id="MyHiddenId" 生成输入
    • 这只是一个例子,为什么:- Existing Id 默认名称来自类/模型,为了隐藏它或获得一些可以理解的 id,我们可以这样做,否则我们可以使用模型属性名称作为 ID :)。
    【解决方案4】:

    你可以使用:

    $(function(){
        var someNr = 100;
        $('#MyHiddenId').val(someNr);
    });
    

    注意:

    • 最好在上面准备好的文档中执行分配。这样把上面的代码放在哪里并不重要,在引用jquery之后就足够了;而如果你直接使用$('#MyHiddenId').val(someNr);,它应该在你的html标签创建之后的某个地方,否则它看不到隐藏的。
      此外,如果该值依赖于任何其他值,或者该值依赖于 ajax 请求,建议将其设置为就绪状态。
    • 由于使用了helper,所以hidden有id属性=MyHiddenId,不需要手动设置。

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 2012-05-23
      • 2020-07-13
      • 1970-01-01
      • 2014-04-10
      • 2012-02-18
      • 2013-07-15
      • 1970-01-01
      • 2018-05-26
      相关资源
      最近更新 更多