有几种方法可以做到这一点,但首先您需要了解您正在做的事情的结构。
它不是 MVC 中的“回发”(或者,实际上,一般来说,在 HTTP 中......WebForms 欺骗了您)。您要做的只是将数据发布到服务器并接收响应。在 MVC 框架中,该帖子的目标将是控制器操作。响应可能有几种不同的情况,具体取决于您采取的方法。
我建议编写一些 JavaScript 来通过 AJAX 执行此任务。这样页面就不会刷新,您只需发送/接收与当前特定任务相关的数据。 ASP.NET MVC 附带了 jQuery,因此我将假设在本例中使用 jQuery。
首先,您需要绑定到更改事件select
元素。它是probably认同与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
});
这样,控制器操作将在名为的参数中提供选定的值selection
:
public ActionResult MyAction(string selection)
{
// do your server-side processing and get your data
return Json(data);
}
此操作返回 Json 格式的数据,因为它由客户端上的 JavaScript 使用。因此,在处理响应时$.post()
调用上面的方法,你会在data
那里的价值。
然后,您可以在 JavaScript 代码中如何处理这些数据。如果它是一个包含您正在寻找的两个值的简单结构,那么它可能会像这样简单:
$('#AvailableCredit').text(data.AvailableCredit);
$('#ClosingDay').text(data.ClosingDay);
或者,你could包裹住select
中的元素form
并在选择更改时发布整个内容,然后控制器操作将返回一个View
并在该视图中填充数据。但这可能有点矫枉过正,因为您只想发送一个值并接收两个值。