我正在尝试调用propDetails函数并将ID传递给它。然后将相同的ID传递给静态控制器,但我继续收到错误:" id = id" (第二个ID不存在)。
我为这个愚蠢的问题感到抱歉,我无法弄清楚我做错了什么......
function propDetails(id) {
var $detailDiv = $('#detailsDiv'), url = $(this).data('url');
$.get( '@Url.Action("PropDetails", "Static", new { id = id })', function(data) {
$('#detailsDiv').html(data);
});
}
任何指导都会非常感激。
答案 0 :(得分:0)
Razor助手中没有id
变量,您可以做的是在id
助手完成后连接Url.Action
:
function propDetails(id) {
var $detailDiv = $('#detailsDiv'), url = $(this).data('url');
$.get('@Url.Action("PropDetails", "Static")' + id, function(data) {
$('#detailsDiv').html(data);
});
}
答案 1 :(得分:0)
从长远来看,您需要呈现一个表单,将您的ID序列化为请求的一部分,写为$("form").serialize()
。
将更多字段附加到使用复杂类型作为参数的操作更容易。您的新代码如下所示:
$.get($detailDiv.find("form").attr("action"),$detailDiv.find("form").serialize(), function(data){
$('detailsDiv').html(data);
});
您的表单对象将在MVC中的HTTPGET请求中创建,使用您构建的@Html.BeginForm()
帮助程序返回视图,该帮助程序是 detailsDiv 的innerHtml的一部分,然后可以使用$("form").serialize()
我希望这很清楚,并完全回答如何解决问题。我会修改它是否偏离基础并为Javascript和MVC的混合添加更多混乱。