在我的视图中,有两个<input type="image">
标记,它们位于表单中。
在我的Controller中,这两个<input type="image">
的值始终显示为“null”。之前,使用<input type="submit">
,值已发布到控制器。现在他们不是。可以告诉我如何在Controller中访问这些值吗?
查看:
@using (Html.BeginForm("Load", "Consent"))
{
//some code
<div id="button1" style="right:150px; width:90px; bottom :15px;position:absolute"><input type="image" src="../../img/ButtonBack.png" name="button" value="Previous" id="back" /></div>
<div id="button2" style="right:20px; width:90px; bottom :15px; position:absolute"><input type="image" src="../../img/ButtonNext.png" name="button" value="Acknowledge" id="ack" /></div>
</div>
}
表单已发布到控制器,但string button
的值为“null”
控制器:
[HttpPost]
public ActionResult Load(bool? chk_acknowledge, string button)
{
// some code
}
答案 0 :(得分:1)
浏览器不需要发布“value”属性的值,因此不要依赖它。值适用于广播和复选框输入字段:http://www.w3.org/TR/html401/interact/forms.html#edef-INPUT
但是,浏览器会发布另外两个表单字段: name .x和 name .y。您可以改为将两个图像按钮命名为“nextButton”和“prevButton”。在您的操作中,检查Request.Form是否包含“nextButton.x”。如果存在,则按下nextButton。同样,如果存在“prevButton.x”,则会按下prevButton。
答案 1 :(得分:0)
仅发布点击 图片按钮的值(仅点击提交的按钮)。虽然在表单中有2个图像按钮,但如果有另一个提交按钮并且您单击它,图像按钮将不会被发布。
例如:你点击div#button1里面的第一个图片按钮 - 在帖子数组中,会有[button] => Previous
其他图片按钮不会被发布。
答案 2 :(得分:0)
当使用指点设备点击图像时,表单为 提交并将点击坐标传递给服务器。 x值 以像素左边的像素和y中的y值来度量 图像顶部的像素。提交的数据包括 name.x = x-value和name.y = y-value其中“name”是的值 name属性,x值和y值是x和y坐标 价值,分别。
所以:
@using (Html.BeginForm("Load", "Consent"))
{
... some code
<input type="image" src="@Url.Content("~/img/ButtonBack.png")" name="Previous" />
<input type="image" src="@Url.Content("~/img/ButtonNext.png")" name="Acknowledge" />
}
然后:
[HttpPost]
public ActionResult Load(bool? chk_acknowledge)
{
if (!string.IsNullOrEmpty(Request["previous.x"]))
{
// the Previous image button was clicked
}
else if (!string.IsNullOrEmpty(Request["acknowledge.x"]))
{
// the Acknowledge image button was clicked
}
...
}