显示从mvc3中的Html.Actionlink()中的数据库中获取的值

时间:2012-03-19 12:17:25

标签: asp.net-mvc asp.net-mvc-3 anchor

我正在制作一个名为AskQuestion的应用程序,在第一页上我有一个问题列表作为链接,下面是一个textarea和一个发布问题的帖子按钮。 当我在textarea内写入并按下post按钮时,它会显示在问题列表中。 现在我从数据库中提取已发布的问题。我需要将其显示为链接.. 但是Html.Actionlink不支持这个

这是我的Model类:

  public class Question_Page
{

    public virtual int Id { get; set; }
    public virtual string Question_name { get; set; }
    public virtual string Address { get; set; }
    public virtual DateTime Created_Date { get; set; }
    public virtual DateTime Modified_Date { get; set; }
    public virtual int Created_By { get; set; }
    public virtual int Modified_By { get; set; }
    public virtual char Deleted { get; set; }
    public Question_Page()
    {
        this.Deleted='F';
    }
}

这是我的观点:

@model IEnumerable<Core.Model.Question_Page>

@{
  ViewBag.Title = "Index";
 }
<style type="text/css">
ul
 {
    list-style-type: none;
 }
</style>

<h2>All Questions</h2>
<hr />

@using (Html.BeginForm("Index","Question",FormMethod.Post))
{
 @Html.ValidationSummary(true)
<ul>
foreach (var item in Model) {

    <li>@Html.ActionLink(item.Question_name, "answer", new { id=item.Id   })</li>
}
   </ul>
<label for="PostyourQuestion:">Post your Question:</label><br /><br />
 @Html.TextArea("textID")    

<br />
<input type="submit"/>
}   

但是我得到一个错误,说“当前上下文中不存在项目”

我知道我也可以在此之前使用锚标记,我也尝试了

<ul>
foreach (var item in Model) {

   <li><a href="answer.cshtml">@Html.DisplayFor(modelItem => item.Question_name)</a></li>
}
</ul>

但是它没有识别href

中指定的url

请帮帮我

2 个答案:

答案 0 :(得分:1)

我做了一个看起来像你的样本,我发现你在“foreach”之前错过了“@”

@foreach (var item in Model) {

答案 1 :(得分:1)

第一个带有“Html.ActionLink”的应该可行。问题可能在您的模型中。如果模型返回null,则此模型中的项将导致foreach循环内的错误,您应首先检查模型null状态。 我认为Html.ActionLink方法在您的情况下非常有用。但是你应该传递参数来识别你的问题,即它的id。然后你可以使用这样的东西:

     foreach(模型中的var项){

    <li>@Html.ActionLink(item.Question_name, "answer",new{id= item.id})</li>
    

    }