You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC Razor中如何在Razor代码内读取隐藏字段的值

解决方案

由于Razor是服务器端渲染机制,页面加载时Html.RenderPartial()就已执行完毕,无法直接在Razor代码中动态获取用户点击触发时的"最近隐藏字段值"(因为此时服务器不知道用户后续会操作哪一行)。针对你页面存在多个同名不同值隐藏字段、对话框由表格行点击触发的场景,推荐通过前端JavaScript动态获取+传递值的方式实现,具体步骤如下:


1. 调整表格行与触发元素结构

确保触发对话框的按钮和目标隐藏字段处于同一表格行内,方便通过DOM关系定位:

<table>
    <tr>
        <td><button class="open-dialog-btn">打开对话框</button></td>
        <td><input type="hidden" name="bob" value="123" class="bobsname" /></td>
    </tr>
    <tr>
        <td><button class="open-dialog-btn">打开对话框</button></td>
        <td><input type="hidden" name="bob" value="456" class="bobsname" /></td>
    </tr>
</table>

2. 修改对话框PartialView(SomeDialog.cshtml)

预留用于接收值的元素,若需提交到服务器可增加隐藏字段:

<div id="SomeDialog" style="display: none;">
    <!-- 显示用的元素 -->
    <p>当前Bob值:<span id="bob-value-display"></span></p>
    <!-- 提交用的隐藏字段(如果需要提交到服务器) -->
    <input type="hidden" id="dialog-bob-value" name="DialogBobValue" />
    <!-- 其他对话框内容 -->
</div>

3. 编写JavaScript点击事件逻辑

在用户点击按钮时,通过DOM层级关系定位当前行的目标隐藏字段,将值传递给对话框:

$(document).ready(function() {
    $('.open-dialog-btn').on('click', function() {
        // 1. 找到当前按钮所在行的隐藏字段
        var currentBobValue = $(this).closest('tr').find('.bobsname').val();
        
        // 2. 更新对话框内的显示元素和提交字段
        $('#bob-value-display').text(currentBobValue);
        $('#dialog-bob-value').val(currentBobValue);
        
        // 3. 显示对话框
        $('#SomeDialog').show();
    });
});

补充说明(服务器端动态渲染方案)

如果你的对话框需要服务器端动态渲染内容(而非提前RenderPartial),可以改用AJAX请求:

  1. 点击按钮时获取隐藏字段值,通过AJAX传递给后端Action
  2. Action将值存入ViewData或返回模型,再返回PartialView
  3. 前端将返回的PartialView内容插入页面并显示

示例代码:

$('.open-dialog-btn').on('click', function() {
    var bobValue = $(this).closest('tr').find('.bobsname').val();
    $.ajax({
        url: '@Url.Action("LoadSomeDialog")',
        type: 'GET',
        data: { bobKey: bobValue },
        success: function(result) {
            // 插入对话框内容并显示
            $('#dialog-container').html(result).show();
        }
    });
});

后端Action:

public ActionResult LoadSomeDialog(string bobKey)
{
    ViewData.Add("BobKey", bobKey);
    return PartialView("SomeDialog");
}

内容的提问来源于stack exchange,提问作者AndyW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:50:57