如何从 mvc 中的 cshtml 视图将参数传递给控制器
How to pass a parameter to a controller from a cshtml view in mvc
net MVC 4 我遵循了有关如何从 mvc 中的 cshtml 视图将参数传递给控制器的 Microsoft 教程,但我不断收到一个错误,指出资源不能 found.If 我设置了一个断点在 cshtml 中,我实际上可以看到 Id 的值,但它根本没有击中控制器,似乎找不到它
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name
changed, or is temporarily unavailable. Please review the following
URL and make sure that it is spelled correctly.
Requested URL: /UploadLogs/DisplayUploadedFileContents/89
这是我的控制器方法
public class DisplayUploadedFileController : Controller
{
private MarketingDBEntitiesModel db = new MarketingDBEntitiesModel();
// GET: DisplayUploadedFile
public ActionResult DisplayUploadedFileContents(int UploadId)
{
return View(db.marketingdbclients_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.ClientDataId < 1000).ToList());
// return View();.
}
}
我在 cshtml 中的行
<td>
@*@Html.ActionLink("Details", "Details", new { id = item.UploadId })*@
@Html.ActionLink("Details", "DisplayUploadedFileContents", new { id = item.UploadId })
</td>
我的路由配置
routes.MapRoute(
name: "DisplayUploadedFileContents",
//url: "",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DisplayUploadedFile", action = "DisplayUploadedFileContents", id = UrlParameter.Optional });
url: "{controller}/{action}/{id}
您没有遵守路由配置。尝试:
@Html.ActionLink("DisplayUploadedFile", "DisplayUploadedFileContents", new { UploadId = item.UploadId })
@Html.ActionLink("DisplayUploadedFile", "DisplayUploadedFileContents", new { UploadId = item.UploadId}, null )
您需要 "htmlArgument"
的参数
请参考:HTML.ActionLink method
进行一些更改应该可以正常工作。
首先,如果您想像这样 url 使用路由 {controller}/{action}/{id}
,请将控制器操作中的参数名称从 UploadId
更改为 id
:
public ActionResult DisplayUploadedFileContents(int id)
接下来,看起来您正在从不同的控制器进行链接,因为在错误中请求的 URL 是 /UploadLogs/DisplayUploadedFileContents/89
(注意 UploadLogs
不是 DisplayUploadedFile
) .
从属于不同控制器的视图链接到 DisplayUploadedFile
控制器,您将需要使用带有 5 个参数的重载:
@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", "DisplayUploadedFile",
null, new { id = item.UploadId })
但是,如果您从同一控制器中的视图访问控制器,您应该能够使用此重载 ActionLink
获取 3 个参数:
@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", new { id = item.UploadId })
请参考动作链接documentation
net MVC 4 我遵循了有关如何从 mvc 中的 cshtml 视图将参数传递给控制器的 Microsoft 教程,但我不断收到一个错误,指出资源不能 found.If 我设置了一个断点在 cshtml 中,我实际上可以看到 Id 的值,但它根本没有击中控制器,似乎找不到它
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /UploadLogs/DisplayUploadedFileContents/89
这是我的控制器方法
public class DisplayUploadedFileController : Controller
{
private MarketingDBEntitiesModel db = new MarketingDBEntitiesModel();
// GET: DisplayUploadedFile
public ActionResult DisplayUploadedFileContents(int UploadId)
{
return View(db.marketingdbclients_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.ClientDataId < 1000).ToList());
// return View();.
}
}
我在 cshtml 中的行
<td>
@*@Html.ActionLink("Details", "Details", new { id = item.UploadId })*@
@Html.ActionLink("Details", "DisplayUploadedFileContents", new { id = item.UploadId })
</td>
我的路由配置
routes.MapRoute(
name: "DisplayUploadedFileContents",
//url: "",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DisplayUploadedFile", action = "DisplayUploadedFileContents", id = UrlParameter.Optional });
url: "{controller}/{action}/{id}
您没有遵守路由配置。尝试:
@Html.ActionLink("DisplayUploadedFile", "DisplayUploadedFileContents", new { UploadId = item.UploadId })
@Html.ActionLink("DisplayUploadedFile", "DisplayUploadedFileContents", new { UploadId = item.UploadId}, null )
您需要 "htmlArgument"
的参数请参考:HTML.ActionLink method
进行一些更改应该可以正常工作。
首先,如果您想像这样 url 使用路由 {controller}/{action}/{id}
,请将控制器操作中的参数名称从 UploadId
更改为 id
:
public ActionResult DisplayUploadedFileContents(int id)
接下来,看起来您正在从不同的控制器进行链接,因为在错误中请求的 URL 是 /UploadLogs/DisplayUploadedFileContents/89
(注意 UploadLogs
不是 DisplayUploadedFile
) .
从属于不同控制器的视图链接到 DisplayUploadedFile
控制器,您将需要使用带有 5 个参数的重载:
@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", "DisplayUploadedFile",
null, new { id = item.UploadId })
但是,如果您从同一控制器中的视图访问控制器,您应该能够使用此重载 ActionLink
获取 3 个参数:
@Html.ActionLink("Display File Contents", "DisplayUploadedFileContents", new { id = item.UploadId })
请参考动作链接documentation