我是MVC和Javascript的新手。我正在尝试为管理员创建“更改用户信息”页面。我有一个下拉列表,其中列出了注册用户和一些文本框,用于输入有关用户的各种信息(例如,姓名,姓氏)。我的目标是在选择具有下拉列表的用户时自动填充带有用户当前信息的文本框。但由于MVC不是事件驱动而且没有回发我不知道如何实现这一点。我想我必须通过dropdownlist的onchange触发一个控制器方法,我认为唯一的方法是使用JS,AJAX或类似的东西。
注意:我可以在Controller中完成所有数据库工作。
到目前为止,我的视图中包含此代码:
.... @Html.DropDownList("Users", ViewBag.Users as SelectList, "Select a User", new { id="UserId", onchange="userChanged()"} ) ....
.... <script type="text/javascript">
function userChanged() {
}
</script> ....
答案 0 :(得分:2)
$(document).ready(function(){
$("#UserId").change(function () {
if ($(this).val() != "" && $(this).val() != undefined && $(this).val() != null)
$.ajax({
type: "GET",
url: "/[ControllerName]/[ActionName]/" + $("#UserId").val()
})
.success(function (data) {
// 'data' consits of values returned from controller.
// fill textboxes with values in 'data'
});
});
});
希望这会对你有所帮助。
答案 1 :(得分:2)
Try something like this (fiddle):
<select id="select1">
<option value="userId1">User 1</option>
<option value="userId2">User 2</option>
<option value="userId3">User 2</option>
</select>
<textarea id="txt1">
</textarea>
$(function(){
$('#select1').change(function(){
$.ajax({
url: "YourAction", // Url.Action()
data: {
userId: $(this).val()
},
success: function(data) {
$('#txt1').val(data);
}
});
});
});
答案 2 :(得分:2)
您可以将控制器操作方法定义为 JsonResult ,并使用AJAX从您的jquery中调用它。 使用AJAX获取数据后,您可以解析它并使用该数据填充相应的文本框。 您可以在下面的代码中使用如何在userChanged方法中调用ajax:
$.ajax ({
url: '/Controller/Action',
type: 'GET',
async: true,
cache: false,
data: { userId: useridofwhichdatatobefetched},
success: function (result) {
$("#usernametextbox").val = result.userName; }
});