我想在此表单上有多个按钮作为图像:
<% Html.BeginForm("Create", "Foos", FormMethod.Post); %>
<!-- html form elements -->
<%=Html.SubmitImage("Button", "save-button.gif", new { alt = "Save" })%>
<% Html.EndForm(); %>
我正在阅读有关Html.ActionImage但我没有在Microsoft.Web.Mvc中看到它,我想它已被删除,是否有其他添加按钮的方式?
我想在一个表单上保存,删除,发布,取消等按钮作为图像,最好每个按钮在控制器中调用自己的动作。
答案 0 :(得分:1)
你可以使用好的html:
<input type="button" name="CancelButton" id="CancelButton" value="Cancel" />
或
<button name="CancelButton" id="CancelButton">Cancel</button>
或其中一名助手
<%= Html.Button("CancelButton", "Cancel", "MyJavascriptFunction()") %>
在任何情况下,您可能需要编写一些小的javascript,除非您只是想使用链接取消。
这是帮助者的一点blog entry。
答案 1 :(得分:0)
当然,一种选择是为每个按钮分别设置表格。没有Javascript或格式错误的HTML,这通常是不可能或不容易的。这很容易让您将每个请求发送到不同的操作方法。
这是我为多个图像提交按钮提出的解决方案。我对此并不是特别高兴,但它有效,如果在框架中内置了替代方案,可以在以后轻松重构。
在您的HTML中
<%= Html.SubmitImage("Dog", "~/images/dog.jpg")%>
<%= Html.SubmitImage("Cat", "~/images/cat.jpg")%>
在表单的控制器操作方法中:
(这是一种行动方法。由您来决定如何实施每个按钮)
public ActionResult Index(FormCollection form)
{
// get the name of the button that was clicked (sent via either Dog.x or Cat.x since its an image button)
var buttonName = form.GetSubmitButtonName();
if (buttonName == "Remove" || buttonName == "Skip")
{
Remove(form);
}
else if (buttonName == "Add")
{
Add(form);
}
}
扩展方法:
(这会找到一个名为Remove.x或Skip.x或Add.x的表单参数,并剥离.x部分)
public static class FormCollectionExtensions
{
public static string GetSubmitButtonName(this FormCollection formCollection)
{
var button = formCollection.Keys.OfType<string>().Where(x => x.EndsWith(".x")).SingleOrDefault();
// we got something like AddToCart.x
if (button != null)
{
return button.Substring(0, button.Length - 2);
}
throw new ApplicationException("No image button found");
}
}
注意:另一种方法是使用CSS将背景图像放在常规的Html.SubmitButton按钮类型(常规HTML按钮而不是HTML图像按钮)上,但由于不同而我没有找到令人满意的不同浏览器的行为方式(see this question)。