我有一个缩略图列表,用户可以选择其中一张图像。
单击缩略图,将较大的图像打开到表单中。
我现在想做的是将所选图像的 ID 发送到我的 Controller 。
注意:我使用的是 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.??????"/>
将此值传递给我的 Controller ??
最佳答案
首先,一些术语帮助:您无法将值从 View 传递到 Controller 操作, View 在 Controller 操作完成后呈现。
您想要做的是使用表单字段将数据从客户端(网络浏览器)传递到 Controller 操作。
在 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"));
}
关于c# - 将值从 View 传递到 Controller - MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638255/