Table 从视图到控制器的值(ASP.NET MVC)
Table value from View to Controller ( ASP.NET MVC )
我正在 ASP.NET MVC 5 中开发一个项目,我的 VIEW 中有一个 TABLE,我在其中通过列表和 Viewbag 显示 ftp 文件夹的内容.
我需要 Table 可以点击。我使用了 *.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"; }
不清楚用户单击某行时的交互方式。你想要:
- Javascript 下载文件并显示预览或内容
- 允许用户编辑文件
- 获取有关文件的元数据
- 将用户定向到下载文件的另一个操作方法
我将布置文件下载存根,但您可以通过更改操作方法逻辑将其更改为您想要的任何交互。您应该做的是在 URL 中通过 GET 传递文件名(因为这是 MVC 方式)。视图将是(格式缺少@,因为代码格式化程序目前不适合我):
foreach (var item in ViewBag.files)
{
<tr>
<td>@Html.ActionLink(item, "Download", "YourController", new { id = item }, null)
</tr>
}
然后您将在控制器中创建一个具有获取参数的操作:
//
//GET: /YourController/Download/{id}
public ActionResult Download(string id)
{
//download logic
}
通过将 new { id = item }
添加到 html 帮助器,您可以通过 GET 将 ftp 文档名称传递给操作方法。在这种情况下,您将在您的逻辑中使用名为 'id' 的字符串来检索文档,或者如果您的初衷不是下载文档,您可以以类似的方式实现您想要的任何内容。
顺便说一下,请确保使用正确的 @Html.ActionLink
重载 - 如果您注意到我放置了 4 个参数,null 是最后一个。在 MVC5 中,他们改变了这一点,如果你不输入第 4 个参数,你将得到 /controller/action?id=Value 而不是 URL.
中的 /controller/action/value
我正在 ASP.NET MVC 5 中开发一个项目,我的 VIEW 中有一个 TABLE,我在其中通过列表和 Viewbag 显示 ftp 文件夹的内容.
我需要 Table 可以点击。我使用了 *.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"; }
不清楚用户单击某行时的交互方式。你想要:
- Javascript 下载文件并显示预览或内容
- 允许用户编辑文件
- 获取有关文件的元数据
- 将用户定向到下载文件的另一个操作方法
我将布置文件下载存根,但您可以通过更改操作方法逻辑将其更改为您想要的任何交互。您应该做的是在 URL 中通过 GET 传递文件名(因为这是 MVC 方式)。视图将是(格式缺少@,因为代码格式化程序目前不适合我):
foreach (var item in ViewBag.files)
{
<tr>
<td>@Html.ActionLink(item, "Download", "YourController", new { id = item }, null)
</tr>
}
然后您将在控制器中创建一个具有获取参数的操作:
//
//GET: /YourController/Download/{id}
public ActionResult Download(string id)
{
//download logic
}
通过将 new { id = item }
添加到 html 帮助器,您可以通过 GET 将 ftp 文档名称传递给操作方法。在这种情况下,您将在您的逻辑中使用名为 'id' 的字符串来检索文档,或者如果您的初衷不是下载文档,您可以以类似的方式实现您想要的任何内容。
顺便说一下,请确保使用正确的 @Html.ActionLink
重载 - 如果您注意到我放置了 4 个参数,null 是最后一个。在 MVC5 中,他们改变了这一点,如果你不输入第 4 个参数,你将得到 /controller/action?id=Value 而不是 URL.