asp.net-mvc - 下拉列表更改的 MVC 4 回发

标签 asp.net-mvc asp.net-mvc-4

我正在使用 MVC4,并且布局中有一个菜单。我的菜单的一部分包含一个下拉列表,用户可以在其中选择可用的提供商。

<div class="row">
    <div class="col-md-4">
    @Html.DropDownListFor(x=> x.usr.DatUsrs.IdProvider, new SelectList(Lista, "Value","Text"))
    </div>
    <div class="col-md-3">
      Credit
      @Html.DisplayTextFor(x=> x.usrSelectedProvider.AvailiableCredit)
    </div>
    <div class="col-md-3">
      TEXT
    </div>
    <div class="col-md-2">
      Closing Day  @Html.DisplayTextFor(m=> m.usrSelectedProvider.ClosingDay)
    </div>
  </div>

我遇到的问题是:当用户更改下拉列表中的选定项目时,我想进行回发以便能够加载 AvailiableCredit 和 ClosingDay。在网络表单中我可以使用自动回发来做到这一点,但我还没有找到在 MVC4 中做到这一点的方法

最佳答案

有几种方法可以做到这一点,但首先你需要了解你正在做的事情的结构。

它不是 MVC 中的“回发”(或者,实际上,一般来说,在 HTTP 中……WebForms 对你撒谎)。您要做的只是将数据发布到服务器并接收响应。在 MVC 框架中,该帖子的目标是 Controller 操作。响应可以是几个不同的事情,具体取决于您采取的方法。

我建议编写一些 JavaScript 来通过 AJAX 执行此任务。这样页面不会刷新,您只是发送/接收与手头特定任务相关的数据。 ASP.NET MVC 带有 jQ​​uery,所以我将假设在这种情况下使用 jQuery。

首先,您需要绑定(bind)到 select 的更改事件。元素。它可能被标识为 id “IdProvider”,但您需要检查呈现的 HTML 以确保。假设它是,你可以使用这样的东西:

$('#IdProvider').change(function () {
    // respond to the change event in here
});

现在您可以在该处理程序中对服务器进行 AJAX 调用。它可能很简单:
var selectedValue = $('#IdProvider').val();
$.post('@Url.Action("MyAction", "MyController")', { selection : selectedValue }, function (data) {
    // handle the server response here
});

这样, Controller 操作将在名为 selection 的参数中提供所选值。 :
public ActionResult MyAction(string selection)
{
    // do your server-side processing and get your data
    return Json(data);
}

此操作返回 Json 格式的数据,因为客户端上的 JavaScript 正在使用它。所以在处理 $.post() 中的响应时在上面调用,您将在 data 中获得该数据那里的值(value)。

您如何处理 JavaScript 代码中的数据取决于您自己。如果它是一个包含您正在寻找的两个值的简单结构,它可能就像这样简单:
$('#AvailableCredit').text(data.AvailableCredit);
$('#ClosingDay').text(data.ClosingDay);

或者,您可以包装 select form 中的元素并在选择更改时发布整个内容,然后 Controller 操作将要返回 View在该 View 中填充数据。但这可能有点矫枉过正,因为您要做的就是发送一个值并接收两个值。

关于asp.net-mvc - 下拉列表更改的 MVC 4 回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933115/

相关文章:

c# - OWIN/Identity 2.0 - 将 pk 从字符串更改为 GUID

asp.net-mvc - 将常量值和变量(输入)文本从 View 传递到 Controller

asp.net-mvc - MVC4 简单成员资格 'The Provider encountered an unknown error.'

asp.net - 我什么时候应该使用 OWIN Katana?

c# - 数据库中的 Asp.net MVC 页面标题

asp.net-mvc-4 - 自定义 header 和 Signalr : Asp.Net MVC4 Web Api

c# - 获取 knockout 模型中的 MVC Person 模型书籍列表(可观察数组)

c# - SimpleMembershipProvider WebSecurity.InitializeDatabaseConnection 因空 sql 数据库而失败

asp.net-mvc-4 - 如何使用 ASP.Net MVC 4 在 Release模式下 bundle LESS 文件?

javascript - jQuery:如何遍历/迭代对象列表