C# 将值从视图传递到控制器-MVC

C# 将值从视图传递到控制器-MVC,c#,javascript,asp.net,asp.net-mvc,C#,Javascript,Asp.net,Asp.net Mvc,我有一个缩略图列表,用户可以选择其中一个图像 单击缩略图,将较大的图像打开为表单 我现在要做的是将所选图像的id发送到我的控制器 注意:我使用的是MVC4 我该怎么做 有人可以帮忙吗 提前感谢: 这是我的密码: @foreach (var p in ViewBag.Images) { <li> <a href="~/Files/@p.Name" onclick="swap(this); return false;">

我有一个缩略图列表,用户可以选择其中一个图像

单击缩略图,将较大的图像打开为表单

我现在要做的是将所选图像的id发送到我的控制器

注意:我使用的是MVC4

我该怎么做

有人可以帮忙吗

提前感谢:

这是我的密码:

 @foreach (var p in ViewBag.Images)
    {           
     <li>
       <a href="~/Files/@p.Name" onclick="swap(this); return false;">
          <img src="~/Files/@p.Name"/>
       </a>
     </li>
}
我现在要做什么

我正在尝试使用

要将此值传递给我的控制器???

首先,一些术语帮助:不能将值从视图传递给控制器操作,视图将在控制器操作完成后呈现

您要做的是使用表单字段将数据从客户端(web浏览器)传递到控制器操作

在javascript交换方法中,可以将Img_Id字段的值设置为所选图像的值。提交表单时,Img_Id将作为表单数据发布,并可作为操作中的参数接受

您可以使用JQuery(或其他工具)执行客户端操作

下面是一个示例(未经测试!):

首先在元素上添加ID作为数据属性:

<a href="~/Files/@p.Name" data-id="@p.ID" onclick="swap(this); return false;">

首先,一些术语帮助:不能将值从视图传递给控制器操作,视图是在控制器操作完成后呈现的

您要做的是使用表单字段将数据从客户端(web浏览器)传递到控制器操作

在javascript交换方法中,可以将Img_Id字段的值设置为所选图像的值。提交表单时,Img_Id将作为表单数据发布,并可作为操作中的参数接受

您可以使用JQuery(或其他工具)执行客户端操作

下面是一个示例(未经测试!):

首先在元素上添加ID作为数据属性:

<a href="~/Files/@p.Name" data-id="@p.ID" onclick="swap(this); return false;">

要将值传递回控制器,您需要提交表单,或者向控制器发出AJAX请求

在第一种情况下,您需要使用javascript更新隐藏字段的值,然后等待用户提交表单,或者根据您的需要通过javascript触发提交


如果你想做一个ajax请求,这或多或少是一样的,但是你不需要一个隐藏的字段来存储值。

要将值传递回你的控制器,你需要提交一个表单,或者向你的控制器发出ajax请求

在第一种情况下,您需要使用javascript更新隐藏字段的值,然后等待用户提交表单,或者根据您的需要通过javascript触发提交


如果您想要执行ajax请求,则大致相同,但不需要隐藏字段来存储值。

您可以在交换函数中使用jQuery。有关正式文档,请参阅

如果您选择使用这种方法,并且假设您将JavaScript放在一个单独的文件中,那么请确保您获得了操作和控制器的路径,并将其也传入

var url = @Url.Action("Index","Home");

因此,您可以调用:onclick=“swap(this.id,url)”

您可以在swap函数中使用jQuery。有关正式文档,请参阅

如果您选择使用这种方法,并且假设您将JavaScript放在一个单独的文件中,那么请确保您获得了操作和控制器的路径,并将其也传入

var url = @Url.Action("Index","Home");


因此,您可以调用:onclick=“swap(this.id,url)”

您需要将其提交(通过POST或GET)回控制器操作。您需要将其提交(通过POST或GET)回控制器操作。您有一个如何执行的示例吗?@user2232273:更新了一个示例。仅供参考,您还可以使用JQuery连接链接上的单击事件。@davesw。。谢谢你的例子。。我尝试了,但仍然没有将值传递给控制器。。我必须看起来更好我怎么能把这个给你work@user2232273:不要使用隐藏的表单字段,而是使用常规的表单字段。单击链接时,您应该会看到正在填充的ID值(这证明客户端正在工作)。客户端工作后,您可能会遇到操作参数的映射问题(即名称错误)。您的代码正在工作。我可以看到我在文本框中选择的每个图像的每个id。。但是这个值不会传递给我的控制器。我得到除此之外的所有值。你有一个例子如何做到这一点吗?@user2232273:更新了一个例子。仅供参考,您还可以使用JQuery连接链接上的单击事件。@davesw。。谢谢你的例子。。我尝试了,但仍然没有将值传递给控制器。。我必须看起来更好我怎么能把这个给你work@user2232273:不要使用隐藏的表单字段,而是使用常规的表单字段。单击链接时,您应该会看到正在填充的ID值(这证明客户端正在工作)。客户端工作后,您可能会遇到操作参数的映射问题(即名称错误)。您的代码正在工作。我可以看到我在文本框中选择的每个图像的每个id。。但是这个值不会传递给我的控制器。我得到了除此之外的所有值。你有一个例子如何做到这一点吗?当然。您希望用户手动提交表单,还是单击图像后自动对其进行处理?我希望当用户单击图像时,在我的表单中打开较大的图像,然后在用户单击“提交”按钮后,将值发送到我的控制器。。非常感谢你的帮助。你在使用jQuery吗?你有一个例子如何做到这一点吗?当然。您希望用户手动提交表单,还是单击图像后自动对其进行处理?我希望当用户单击图像时,在我的表单中打开较大的图像,然后在用户单击“提交”按钮后,将值发送到我的控制器。。非常感谢您的帮助。您在使用jQuery吗?
var url = @Url.Action("Index","Home");