【发布时间】:2019-07-04 09:51:43
【问题描述】:
我是 MVC 的新手。所以这可能是我提出的一个愚蠢的问题。
我正在尝试将参数发送到我的控制器,但我没有得到值。有人可以帮我做错什么吗?
在控制器中传递的用户名始终为空。从我遵循的示例中,它使用整数作为参数。当我使用 id 时,我将获得参数。但是当我传递字符串时,我会得到空值。请帮我。谢谢。
这里是风景
$(document).ready(function () {
dataTable = $("#batchTable").DataTable({
"ajax": {
"url": "/Home/GetDPUserList",
"type": "POST",
"datatype": "json"
},
"columns": [
{ "data": "Username", "name":"Username" },
{ "data": "Name", "name": "Name" },
{ "data": "Email", "name": "Email" },
{ "data": "IsAdmin", "name": "IsAdmin" },
{
"data": "Username", "render": function (data) {
return "<a class='btn btn-default btn-sm' onclick=EditUserForm('@Url.Action("UpdateUser","Home")/" + data +"')><i class='fa fa-pencil'></i> Edit</a><a class='btn btn-danger btn-sm' style='margin-left: 5px' onclick=Delete(" + data +")><i class='fa fa-trash'></i> Delete</a>";
},
"orderable": false,
"searchable": false,
"width": "150px"
},
],
"processing": "true",
"serverSide": "true",
"order": [0, "asc"]
});
});
function EditUserForm(url) {
alert(url)
var formDiv = $('<div/>');
$.get(url)
.done(function (response) {
formDiv.html(response);
popup = formDiv.dialog({
autoOpen: true,
resizable: false,
title: "Add New User",
height: 410,
width: 300,
close: function () {
popup.dialog('destroy').remove();
}
});
});
}
这里是控制器
[HttpGet]
public ActionResult UpdateUser(string username = "")
{
if (string.IsNullOrEmpty(username))
{
return View(new DP_User());
}
else
{
using (DBModel db = new DBModel())
{
return View(db.DP_User.Where(x => x.Username == username).FirstOrDefault<DP_User>());
}
}
}
【问题讨论】:
-
将用户名作为查询字符串而不是参数传递。因为默认 mvc 路由期望变量名称为
id而您使用的是username -
正如Manprit所说。默认 mvc 路由需要变量名作为 id。你可以参考Route.Config。我已将表更改为使用 id。
标签: c# jquery asp.net-mvc model-view-controller