我正在使用ASP.NET MVC 5中的一个项目,我在VIEW中有一个TABLE,我通过列表和Viewbag显示ftp文件夹的内容。
我需要表格可点击。我使用了* .js文件,因此行可以点击,但现在我有一个问题,即将文件名(行的值)返回给Controller。
查看代码:
<table class="row col-md-12 leva table-responsive table-bordered table-hover ">
<tbody data-link="row" class="rowlink">
@foreach (var item in ViewBag.files)
{
<tr>
<td class=" row col-md-12 "><a href="#" target="_blank"> <h5> @item</h5></a></td>
</tr>
}
</tbody>
</table>
和控制器代码:
List<string> ftpfiles = new List<string>();
try
{
var ftpco = new Project.Helpers.ftp(@path, name, passwd);
string[] simpleDirectoryListing = ftpco.directoryListSimple("");
for (int i = 0; i < simpleDirectoryListing.Count(); i++)
{
if (simpleDirectoryListing[i].Length >= 3)
{
ftpfiles.Add(simpleDirectoryListing[i]);
}
}
ViewBag.files = soubory;
}
catch { ViewBag.files = "nenacteno"; }
答案 0 :(得分:2)
当用户点击某行时,不清楚交互应该是什么。你想要吗:
我将为文件下载布置存根,但您可以通过更改操作方法逻辑将其更改为您想要的任何交互。你应该做的是通过URL中的GET传递文件名(因为这是MVC方式)。视图将是(格式化缺少@,因为代码格式化程序目前没有为我提供):
foreach (var item in ViewBag.files)
{
<tr>
<td>@Html.ActionLink(item, "Download", "YourController", new { id = item }, null)
</tr>
}
然后你会在控制器中创建一个带有get参数的动作:
//
//GET: /YourController/Download/{id}
public ActionResult Download(string id)
{
//download logic
}
通过将new { id = item }
添加到html帮助器,通过GET将ftp doc名称传递给action方法。在这种情况下,您可以在逻辑中使用名为“id”的字符串来检索文档,或者如果您的原始意图不是下载文档,则可以以类似的方式实现您想要的任何内容。
顺便说一句,确保使用@Html.ActionLink
的正确重载 - 如果你注意到我放了4个参数,null就是最后一个。在MVC5中,他们改变了这一点,如果你没有放第4个参数,你将得到/ controller / action?id = Value而不是URL中的/ controller / action / value。