我真的希望有人能帮我解决这个我想做的事情。我是MVC的新手,我仍然试图理解它!
我有一个名为Submission的控制器,它传递了公司ID,因此我可以跟踪我们在哪家公司工作。
http://myurl/Submission/Index/1
此视图的代码:
@model IEnumerable<Reports.Models.Submission>
@{
ViewBag.Title = "Index";
}
<p>@Html.ActionLink("Create New", "Create")</p>
@foreach (var item in Model)
{
<p>@Html.DisplayFor(modelItem=>item.ContactName) | @Html.ActionLink("Edit", "Edit", new { id=item.submissionID }) </p>
}
我可以看到我如何将我的提交内容传递给我的&#34;编辑&#34;链接,因为我在模型的循环内。这很好。
我的问题是我无法在我的&#34;创建新的&#34; Actionlink,例如
<p>@Html.ActionLink("Create New", "Create",new {id=Model.[No options appear here!]}</p>
我认为这是因为我的模型在顶部被声明为IENumerable,但是我需要这样来循环我的公司以进行编辑链接。基本上看起来我需要两个版本的模型,但我知道这是不可能的。谁知道我能在这做什么?
答案 0 :(得分:0)
如果您的代码与您的帖子完全一样,那么Visual Studio和Razor无法解决这个问题。不过你可以。您的代码如下所示:
<p>@Html.ActionLink("Create New", "Create", new {id=Model.[No options appear here!]}</p>
请再次检查您的代码,并证明缺少结束括号)
。如果是,那么只需关闭括号就可以恢复智能感知。也就是说,您的代码应如下所示:
<p>@Html.ActionLink("Create New", "Create", new {id=Model.[No options appear here!]})</p>
^
look for this _____|
答案 1 :(得分:0)
我会创建一个ViewModel而不是在你的cshtml上使用IEnumerable作为初学者。
查看模型
using System.Linq;
using System.Collections.Generic;
public class SubmissionVm {
public IEnumerable<Reports.Models.Submission> submissions { get; set; }
public int MaxId {
return submissions.OrderByDescending(s => s.submissionID).FirstOrDefault().submissionID;
}
}
在你的cshtml上,在你的Create New链接中,你将追踪Model。,但是没有属性可供查看,因为Model是一个IEnumerable。也许你正试图获得下一个id,或者Enumerable中的最高ID?因此,上面的MaxId属性将为您提供IEnumerable中最高的submissionID。然后,您可以修改“创建新”链接。
<p>@Html.ActionLink("Create New", "Create",new {id=Model.MaxId})</p>
在您的控制器上,您可能希望将此数字增加一个,或者从MaxId更改它
答案 2 :(得分:0)
我假设当url/Submission/Index/x
x
是公司ID时,您希望将其生成为创建链接:url/Submission/Create?CompanyId=x
。我建议将模型类更改为类似下面的内容,其中包含CompanyID
和Submissions
属性。
public class SubmissionIndexModel
{
public SubmissionIndexModel()
{
this.Submissions = new List<Submission>();
}
public int CompanyID { get; set; }
public List<Submission> Submissions { get; set; }
}
这是您的控制器代码应该是什么样子
public ActionResult Index(int id)
{
SubmissionIndexModel model = new SubmissionIndexModel();
model.CompanyID = id;
model.Submissions = (from n in db.Submissions where n.reportNameID == id select n).ToList();
return View(model);
}
您的观看代码应如下所示,您可以将Model.CompanyID
传递给创建操作链接,并通过Model.Submissions
枚举以生成修改链接。
@model SubmissionIndexModel
@{
ViewBag.Title = "Index";
}
<p>@Html.ActionLink("Create New", "Create", new { CompanyId = Model.CompanyID })</p>
@foreach (var item in Model.Submissions)
{
<p>@Html.DisplayFor(modelItem => item.ContactName) | @Html.ActionLink("Edit", "Edit", new { id = item.submissionID }) </p>
}