0

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

onclick 在缩略图上打开一个更大的图像到一个表格中。

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

注意:我使用 MVC 4。

我怎样才能做到这一点?

有人可以帮忙吗?

提前致谢:

这是我的代码:

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

选择时,以我的形式进行此IMG标签:

<img id="main" src="" >

将此 javascript 用于此事件:

function swap(image) {
        document.getElementById("main").src = image.href;
    }

我现在该怎么办?

我试图<input type="hidden" name="Img_Id" value="Viewbag.??????"/> 将此值传递给我的控制器?

4

3 回答 3

3

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

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

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

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

这是一个例子(虽然没有测试!):

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

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

然后一些 javascript 将其保存为表单(在此处使用 jquery):

function swap(image) {
    document.getElementById("main").src = image.href;
    $("input[name='Img_Id']").val($(image).data("id"));
}
于 2013-09-05T13:59:37.310 回答
0

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

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

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

于 2013-09-05T14:02:28.560 回答
0

您可以在交换函数中使用 jQuery。有关官方文档,请参见此处

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

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

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

于 2013-09-05T14:53:24.947 回答