那为什么这不适合我呢? 我有一个actionlink,它应该将模型实例带回控制器。
问题视图
@foreach (var question in Model.Select(item => item as Question))
{
..
@Html.ActionLink(@question.Title, "SingleQuestion", "Posts", question, null)
..
}
控制器
public ActionResult SingleQuestion(Question question)
{
return View();
}
但是在使用此解决方案时: Is there any way to pass a whole model via html.actionlink in ASP.NET MVC 3?
确实如此,这是因为模型实例可以复杂吗?
由于
答案 0 :(得分:3)
Html.ActionLink
辅助方法会生成一个锚标记并点击该标记,通常会对目标网址发出GET
请求。
您不应该尝试将复杂对象传递给GET操作方法。您应该传递一个唯一的ID,使用该ID可以重建/重新查询复杂对象并在视图中使用它。
@foreach (var question in Model.Select(item => item as Question))
{
<p>
@Html.ActionLink(@question.Title, "SingleQuestion", "Posts",
new {questionId=question,Id}, null)
</p>
}
在你的GET Action方法中
public ActionResult SingleQuestion(int questionId)
{
Question q = GetQuestionFromSomeWhere(questionId);
if(q!=null)
{
return View(q);
}
return View("NotFound");
}
答案 1 :(得分:0)
对于Question
类,添加至少1个没有参数的空构造函数:
public class Question {
public Question () {} //add this
public Question (string param1) { //your constructor }
}