Asp.net mvc 为ASP MVC中的每个链接分配路径

Asp.net mvc 为ASP MVC中的每个链接分配路径,asp.net-mvc,Asp.net Mvc,我有多个pdf文档,我必须在一个视图中显示。我的代码是为所有链接打开同一个文档,这是错误的 在我的控球器中: public ActionResult Docs() { var docModel = this._documentBuilder.Build(this.StateData); foreach (var doc in docModel.OldEstimateFiles) { return this.File(doc.PdfUrl, "applica

我有多个pdf文档,我必须在一个视图中显示。我的代码是为所有链接打开同一个文档,这是错误的

在我的控球器中:

public ActionResult Docs()
{
    var docModel = this._documentBuilder.Build(this.StateData);
    foreach (var doc in docModel.OldEstimateFiles)
    {
        return this.File(doc.PdfUrl, "application/pdf");
    }
    return null;
}
并且认为:

foreach (var menuItem in Model.OldEstimateFiles)
{
    <ul >
        <li>
            @using (Html.Anchor(new ststyle { URL = "/DocumentEstimate/Docs", Target = "_blank", Text = menuItem.Label }))
            {
            }
        </li>
    </ul>
}
foreach(Model.OldEstimateFiles中的var menuItem)
{
  • @使用(Html.Anchor(新ststyle{URL=“/DocumentEstimate/Docs”,Target=“\u blank”,Text=menuItem.Label})) { }
}

知道oldestimatefiles是一个列表时,我的代码有什么问题?

我在控制器中编辑了我的操作,以获取ID

public ActionResult Docs(string id)
        {
            var docModel = this._documentBuilder.Build(this.StateData);
        return docModel.OldEstimateFiles.Any() ? this.File(docModel.OldEstimateFiles.Find(p => p.ID == id).PdfUrl, "application/pdf") : null;
        }
我在routeConfig文件中添加了一个条目,其中包含URL和文档id,并在视图中编辑了我的链接:

 @using (Html.Anchor(new ststyle
              {
                  URL = "/DocumentEstimate/EstimateDocs/" + menuItem.ID,
                  Id = menuItem.ID

它解决了问题。

您的控制器方法中有一个
return
语句(它立即存在)在第一次迭代中退出该方法并仅返回第一个文件。您的方法需要一个参数来标识该文件,以便您返回一个特定的文件,这很好,我同意,但如何在锚中的视图中调用它?我不知道
Html.anchor()是什么
是-它不是MVC的一部分。您如何唯一地标识您的文件?使用标准帮助程序,它将是
@Html.ActionLink(“displayName”、“Docs”、“controllerName”、new{id=someIdentifier},null)
方法将是
public FileResult Docs(int id)
,然后根据id值返回文件。