mmi*_*lan 11 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>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是:当用户更改下拉列表中的选定项目时,我想进行回发以便能够加载AvailiableCredit和ClosingDay.在webforms中,我可以使用autopostback执行此操作,但我还没有找到在MVC4中执行此操作的方法
Dav*_*vid 23
有几种方法可以做到这一点,但首先你需要了解你正在做的事情的结构.
它不是MVC中的"回发"(或者,实际上,在HTTP中一般...... WebForms骗你).您要做的只是将数据发布到服务器并接收响应.在MVC框架中,该帖子的目标是控制器动作.响应可以是几个不同的事情,具体取决于您采取的方法.
我建议编写一些JavaScript来通过AJAX执行此任务.这样页面就不会刷新,而您只是发送/接收与手头特定任务相关的数据.ASP.NET MVC附带了jQuery,所以在这种情况下我将假设使用jQuery.
首先,您需要绑定到该select元素的change事件.它可能标识为id"IdProvider",但您需要检查呈现的HTML以确保.假设它是,你可以使用这样的东西:
$('#IdProvider').change(function () {
// respond to the change event in here
});
Run Code Online (Sandbox Code Playgroud)
现在,您可以在该处理程序中对服务器进行AJAX调用.它可能很简单:
var selectedValue = $('#IdProvider').val();
$.post('@Url.Action("MyAction", "MyController")', { selection : selectedValue }, function (data) {
// handle the server response here
});
Run Code Online (Sandbox Code Playgroud)
这样,控制器操作将在名为的参数中具有所选值selection:
public ActionResult MyAction(string selection)
{
// do your server-side processing and get your data
return Json(data);
}
Run Code Online (Sandbox Code Playgroud)
此操作返回Json格式的数据,因为它在客户端上由JavaScript使用.因此,当在$.post()上面的调用中处理响应时,您将获得该data值中的数据.
您在JavaScript代码中对该数据执行的操作由您决定.如果它是一个具有您正在寻找的两个值的简单结构,它可能就像这样简单:
$('#AvailableCredit').text(data.AvailableCredit);
$('#ClosingDay').text(data.ClosingDay);
Run Code Online (Sandbox Code Playgroud)
或者,您可以将select元素包装在a中,form并在选择更改时发布整个内容,然后控制器操作将返回a View,并在该视图中填充数据.但这可能有点过头了,因为你要做的就是发送一个值并接收两个值.
| 归档时间: |
|
| 查看次数: |
31626 次 |
| 最近记录: |