通过 js 脚本将值从 ASP cshtml 传递到控制器

Passsing a value from an ASP cshtml into through js script to a controller

提问人:dgad 提问时间:6/9/2023 更新时间:6/9/2023 访问量:12

问:

上下文:

我有 ASP.NET CORE 6 项目。

我在显示用户的表格中添加了一个按钮。此按钮会触发一个模式窗口,稍后该窗口将包含一小段逻辑(重置用户的密码)。

需要:

模式窗口实际上会触发并且对每一行都有效,但我无法将参数从表的行按钮传递到控制器中。

视图 (.cshtml)

<table class="table xtable-striped">
    <thead>
        <tr>
            ...
        </tr>
    </thead>
    <tbody class="tablealtrow">
        @foreach (var user in Model)
        {
            <tr>
                <td>@user.UserName</td>
                    ...
                <td>
                    <a class="btn btn-primary" id="btnShowModal">Reset Password</a>
                </td>
            </tr>
        }
    </tbody>
</table>

...

<div class="modal fade" id="Modal">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            <div class="modal-body" />
        </div>
    </div>
</div>

<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () 
    {
        $('[id*=btnShowModal]').on("click", function () 
        {
            $.get("@Url.Action("ResetPassword","UserRoles",
                function (data) 
                { 
                    $('.modal-body').html(data); 
                })
            $("#Modal").modal('show');
        });
        $("#btnHideModal").click(function () 
        {
            $("#Modal").modal('hide');
        });
    });
</script>

模型:

可能会有一个 UserIdentity 和 UserManager 实例,但有一段时间我让它变得简单。

public class ResetPasswordModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}

控制器:

在这里,我正在创建一个带有虚拟数据的 ResetPasswordModel,但希望从视图中获取此处的用户 ID。

public IActionResult ResetPassword()
{
    return PartialView("ResetPassword", new ResetPasswordModel() { Id = 1, Name="TESTTESTTEST" });
}

模态视图模型:

用户单击“重置”按钮后,将存在重置密码的逻辑。此外,还将显示临时密码。我会自己管理这个逻辑。

@model ResetPasswordModel

<p>You are about to reset the password for the user: @Model.Name</p>

<a class="btn btn-secondary" data-dismiss="modal">Close</a>
<a class="btn btn-primary">Reset</a>

已经尝试过:

尽管进行了多次尝试,我还是无法管理它。其中:

  • use 而不是 .$.ajax$.get
  • 设置按钮的属性data-user-name="@user.UserId"
  • 尝试以某种方式通过 View 元素实例将值获取到 JS 变量中并将其传递给 action:
    CONTROLLER:
    public IActionResult ResetPassword(string parameterUSERID)

    JS SCRIPT:
    var parameterTEST = $('#userId').val;
    var parameterTEST  = $(this).data('user-name');
    $.get("@Url.Action("ResetPassword","UserRoles", new { parameterUSERID = parameterTEST  })", ... )

对不起,这样的业余问题。这实际上是我的第一个JS任务。

javascript asp.net html-table 控制器 参数传递

评论


答: 暂无答案