当我点击按钮输入时触发控件ImagePopup
内的动作Stories
但是它会抛出错误。
代码:
@{
var listData = (List<HimHer.Models.Stories>)ViewBag.Grid;
foreach (var imageName in listData)
{
<div class="col-md-4">
@Html.HiddenFor(model => model.Story)
<input
class="img-responsive img-thumbnail"
type="image"
onclick="location.href='@Url.Action("ImagePopup", "Stories", new {story= imageName.Story})'"
src="@("/UploadedFiles/"+ imageName.Image)"
alt="Submit"
width="100%"
height="100%"/>
</div>
}
}
单击输入后会抛出错误:
无法找到资源。请求的URL:/ Stories / ImagePopup
即使它存在。它就在Stories文件夹中。这是没有模型的局部视图。
[HttpPost]
public ActionResult ImagePopup(string story)
{
ViewBag.PopupStyle = "";
ViewBag.PopupStory = story;
return View("GetImagesStories");
}
我做错了什么?
答案 0 :(得分:1)
我正在寻找一个HTTPGet动作。 如果你想打电话给你的帖子,你需要使用HTML.BeginForm但如果页面上有太多的话,它会变得毛茸茸。
答案 1 :(得分:0)
尝试使用[HttpGet]
操作方法的<{1}}属性
答案 2 :(得分:0)
设置当前页面的href位置:
location.href=
使浏览器执行Get Request类型,并且不会将任何表单数据发布回控制器。因为控制器上的方法专门用于发布请求(因为[HttpPost]
属性),所以没有其他匹配的方法可以工作,因此你会得到一个异常。
解决方案:
您可以继续使用Get方法。将[HttpPost]
替换为[HttpGet]
会让你到达中途。另一个要求是确保Url.Action
代码包含要回发的所有必要信息(例如@Html.HiddenFor(model => model.Story)
中的所有数据都不包括在内,我不知道您是否需要是不是。)
或者
您可以修改代码以使用Post方法。将您的<input type="image"
更改为<button type="submit">
,并在每个按钮和隐藏的输入元素周围添加表单。