我有这段代码
function pickdet(Id) {
//alert(Id);
var dd = Id;
$.ajax({
cache: false,
url: "/PVSigns1/GetDetails",
data: { 'Id' : Id },
type: "GET",
dataType: "json",
success: function (data) {
//alert('i dey here')
var row = "";
$.each(data, function (index, item) {
//row += "<tr><td>" + item.VitalSigns.Sign + "</td><td>" + item.SignValue + "</td><td> <input type= 'button' onclick= location.href = + '<Url.Action("Create", "PVSigns1", new { Id = item.PVSignId }) ' />" + "</td></tr>";
row += "<tr><td>" + item.VitalSigns.Sign + "</td><td>" + item.SignValue +
"</td><td> <button class='btn btn-xs btn-success' onclick = '@Url.Action("Create","PVSigns1", new { Id = item.PVSignId })'> <i class='fa fa-edit fa-lg'></i> Edit</button></td></tr>";
});
$("#pvv").html(row);
},
error: function (result) {
$("#pvv").html('Nothing to show <br /> <p />' + result );
}
});
}
问题是它指向了某个项目并抱怨“名称项目在当前上下文中不存在”。错误是在@ Url.Action之后发生的,之前的其他错误是正确的。
"</td><td> <button class='btn btn-xs btn-success' onclick = '@Url.Action("Create","PVSigns1", new { Id = item.PVSignId })'> <i class='fa fa-edit fa-lg'></i> Edit</button></td></tr>";
答案 0 :(得分:2)
看看这一行,
@ Url.Action(&#34; Create&#34;,&#34; PVSigns1&#34;,new {Id = item.PVSignId})
但是在你的代码中,item
是你循环中的一个javascript变量。 你无法将javascript变量传递给Url.Action
方法,因为Url.Action
代码将在服务器之前执行(那时它对未来的ajax一无所知)打电话给页面!!!)
解决方案是使用Url.Action
的另一个重载来构建Create操作方法的基本URL并附加javascript变量属性并使用它。
此外,将onclick
事件设置为网址可能不起作用。您可以考虑在按钮中添加click
事件并重定向到网址。您可以将网址保留在html 5数据属性中。
var baseLink='@Url.Action("Create","PVSigns1")';
$.each(data, function (index, item) {
var link=baseLink+item.PVSignId;
row += "<tr><td>" + item.VitalSigns.Sign + "</td><td>" + item.SignValue +
"</td><td> <button class='editBtn' data-url='"+link+"'>
<i class='fa fa-edit fa-lg'></i> Edit</button></td></tr>";
});
并有一些jQuery代码来侦听此按钮上的click事件并重定向到我们数据属性中的url
$(function(){
$("button.editBtn").click(function(e){
e.preventDefault();
window.location.href=$(this).attr("url");
});
});
答案 1 :(得分:1)
您有引用问题,并尝试将c#与javascript变量混合使用。
你可以尝试像
这样的东西success: function (data) {
var row = "";
//the "base url"
var url = '@Url.Action("Create","PVSigns1")' + '?Id=';
$.each(data, function (index, item) {
//add the id value here
var clickUrl= url +item.PVSignId;
row += "<tr><td>" + item.VitalSigns.Sign + "</td><td>" + item.SignValue +
"</td><td> <button class='btn btn-xs btn-success' onclick = '" + clickUrl +"'> <i class='fa fa-edit fa-lg'></i> Edit</button></td></tr>";
});
$("#pvv").html(row);
},
答案 2 :(得分:0)
JS语法错误:
"</td><td> <button class='btn btn-xs btn-success' onclick = '@Url.Action("Create","PVSigns1", new { Id = item.PVSignId })'> <i class='fa fa-
^--start string ^--end string
您无法在该字符串中嵌入用于分隔字符串的相同类型的“裸”引号。他们必须逃脱:
.... @Url.Action(\"Create\", \"PVSigns1\" ...