Html.ActionLink没有传递我的ID

时间:2013-11-29 12:46:48

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-5 actionlink

在我看来,我有一个将Id传递给另一个视图的ActionLink。我多次使用它,但由于某种原因它在这个ActionLink上不起作用。我甚至尝试在javascript中使用AJAX POST调用,但也没有成功。难道我做错了什么?如果是这样,我没有看到什么。

控制器:

此函数中的参数Id为0,应填写。

public ActionResult NieuwPriveBericht(int Id)
    {
        TblPER_Personeelslid Sender = BCL.GetEmployeeByLoginName(Session["LoginName"].ToString());
        TblPER_Personeelslid Receiver = BCL.GetEmployeeById(Id);

        var Model = new TblALG_PrvBericht();
        Model.Datum = DateTime.Now.Date;
        Model.Zender = Sender.IDPersoneelslid;
        Model.Ontvanger = Receiver.IDPersoneelslid;

        ViewBag.ReceiverName = Receiver.Voornaam + " " + Receiver.Naam;

        return View(Model);
    }

 public ActionResult PriveBerichten()
    {
        ViewBag.SelectedEmployee = "";

        var Model = new PriveBerichten();
        return View(Model);
    }

查看:

如果我调试我的视图,我清楚地看到@ Model.SelectedOption已填满。

@using (Html.BeginForm("PriveBerichten", "Home", @Model, FormMethod.Post))
{

@Html.ActionLink("Nieuw bericht maken", "NieuwPriveBericht", new { Id = @Model.SelectedOption }, new { @class = "button-add" })
}

AJAX CALL

$("#DdlEmployees").change(function () {
    var SelectedEmployee = $('#DdlEmployees option:selected').val();
    $.ajax({
        type: "POST",
        url: 'PriveBerichten?SelectedEmployee=' + SelectedEmployee, // this works
        dataType: "json",
        data: $('form').serialize(),
        success: function () {
            alert("test"); // does not show
        },
        error: function () {
        }
    });
})

2 个答案:

答案 0 :(得分:1)

如果你没有设置路由的ID是" Id",你需要使用" id"。同时删除" @ Model"在BeginForm中。

<强>动作

public ActionResult NieuwPriveBericht(int id)
    {
//
    }

查看:

@using (Html.BeginForm("PriveBerichten", "Home", FormMethod.Post))
{

 @Html.ActionLink("Nieuw bericht maken", "NieuwPriveBericht", 
               new { id = @Model.SelectedOption }, new{ @class = "button-add" })
}

答案 1 :(得分:0)

感谢您显示生成视图的ActionResult。我认为这是你的问题:

var Model = new PriveBerichten();
return View(Model);

我认为您的班级PriveBerichten包含SelectedOption属性?如果你没有在PriveBerichten的构造函数中更改/初始化此属性值,则默认为0,因此在actionlink中它将为0。