【问题标题】:Value not passed to controller method值未传递给控制器​​方法
【发布时间】:2017-12-13 15:07:17
【问题描述】:

我有以下视图Board.cshtml,我想根据DropDownListFor 的事件呈现部分视图MessagesBoard.cshtml

Boards.cshtml

<script>
    $(function () {
        debugger
        $("#selected_listBulletinBoardsMessages").change(function (e) {
            alert($(this).val());
            var val = $(this).val();
            $("#updateBulletMessagesView").load("UpdateBoardMessages/", { listBulletinBoardsMessages: val });
        });
    });
</script>
<div>
    @Html.DropDownListFor(model => model.listBulletinBoardsMessages, Model.listBulletinBoardsMessages.Select(b => new SelectListItem() { Value = b.Department, Text = b.Department }), "All Departments",
           new { @class = "form-control",
                 id = "selected_listBulletinBoardsMessages"
       })
</div>

<div id="updateBulletMessagesView">
    @Html.Partial("MessagesBoard")
</div>

Controller 方法:UpdateBoardMessages 没有从 jQuery 脚本发送的 val 的值。

public ActionResult UpdateBoardMessages(string val)
        {
            val = val; //NULL??
            ..
            return PartialView("MessagesBoard.cshtml");
        }

我做错了什么?

【问题讨论】:

  • 你的控制器动作被调用了吗?
  • 您将变量作为 listBulletinBoardsMessages 而不是 val 传递。
  • @EhsanSajjad 是的。
  • @Fran 你的建议是:“val”而不是“{listBulletionBoardsMe:val}”?如果是这样的话。它也不起作用。
  • 这段代码还有其他问题。请参阅 Ehsan 的回答。加载 URL 中缺少控制器。注意他没有在他传递 val 的 url 中传递 listBulletinBoardsMessages。

标签: c# jquery ajax asp.net-mvc http-post


【解决方案1】:

您实际上需要使用Url.Action 来生成正确的url 而不是使用魔术字符串,然后您可以在javascript 中通过字符串连接添加查询字符串参数,例如:

$("#updateBulletMessagesView").load('@Url.Action("UpdateBoardMessages","ControllerName")'+'?val='+val;

希望这会有所帮助。

【讨论】:

  • 有一个错误'&amp;val='+val;必须是'?val='+val;
  • 它实际上并没有中断我的控制器操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
相关资源
最近更新 更多