Javascript将参数传递给控制器​​

时间:2018-03-19 17:12:47

标签: javascript asp.net model-view-controller

我正在尝试调用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);
        });
}

任何指导都会非常感激。

2 个答案:

答案 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的混合添加更多混乱。