在这里,我有一个保存数据的Action方法。
如果ID为null,则返回空对象。 如果ID有值,它将尝试在数据库中找到值。
[HttpGet]
public async Task<ActionResult> Save(string pID)
{
if (pID == null)
return View(new TestCaseViewModel());
else
return View(await m_TestCaseManager.FindByID(pID));
}
在我的javascript中,我使用生成href
的{{3}}:
var oTable = $('#myDatatable').DataTable({
"ajax": {
"url": '/home/GetTestCases',
"type": "get",
"datatype": "json"
},
"columns": [{
"data": "Name",
"autoWidth": true
},
{
"data": "Desc",
"autoWidth": true
},
{
"data": "IsActive",
"autoWidth": true
},
{
"data": "ID",
"width": "50px",
"render": function(pID) {
return '<a class="popup" href="/home/save/pID=' + pID + '">Edit</a>';
}
},
{
"data": "ID",
"width": "50px",
"render": function(pID) {
return '<a class="popup" href="/home/delete/pID=' + pID + '">Delete</a>';
}
}
]
})
但是,即使HTML看到了ID,该函数也永远不会收到它。想法?
答案 0 :(得分:3)
将/
替换为?
,如下所示:
/home/save?pID=aksl09-12kjh8-198273
答案 1 :(得分:0)
你的链接错误..看起来你正在做一个糟糕的url参数路由和常规GET参数混合。你需要做任何一种,或者不是你想要的混合物。
要执行真正的GET参数,请将链接更改为以下内容。请注意,将最终/
更改为?
以表示GET参数。
<a href="/home/save?pID=PIDHERE">Edit</a>
要执行url路由参数,您需要编辑启动文件并在添加MVC时创建路由。在启动文件中有类似的东西。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{pid?}");
});
然后将您的链接更改为以下
<a href="/home/save/PIDHERE">Edit</a>