在我看来,我有一个将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 () {
}
});
})
答案 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。