我有一个简单的form
,里面有两个buttons
。每个button
都必须在我view
的不同controller
上重定向我。我正在网上寻找一些例子,找到解决方案并实施它们。不幸的是,它不适合我。
控制器:
public class HomeController : Controller
{
private MovieEntities db = new MovieEntities();
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
[Button(ButtonName = "clickButton", ButtonValue = "Send")]
public ActionResult Send()
{
return View();
}
[HttpPost]
[Button(ButtonName = "clickButton", ButtonValue = "Reset")]
public ActionResult Reset()
{
return View();
}
}
索引视图:
@model IEnumerable<CustomWizzardMVC.Models.MovieInfo>
@{
ViewBag.Title = "Home";
}
<h1>Insert informations</h1>
@using(Html.BeginForm())
{
<input type="button" name="clickButton" value="Send" />
<input type="button" name="clickButton" value="Reset" />
}
发送和重置视图只是包含<p>
标记的简单视图。
我也有按钮类:
public class Button : ActionNameSelectorAttribute
{
public string ButtonName { get; set; }
public string ButtonValue { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request[ButtonName] != null && controllerContext.HttpContext.Request[ButtonName] == ButtonValue;
}
}
我在这里做错了什么?另外,如果你知道其他一些方法来执行相同的功能而不使用jQuery ,请发布一些代码:)
答案 0 :(得分:0)
您可以通过其action属性配置表单的目标。
因此,您可以通过更改表单的操作属性来完成此操作。您需要使用客户端脚本来执行此操作。
另一个选项是,您可以发送包含用户选项的值(例如Option =“reset”或Option =“send”)。并确定您需要在默认视图中查看的视图。
答案 1 :(得分:0)
将输入类型=“按钮”更改为type =“submit。
<input type="button" />
按钮不会提交表单 - 默认情况下它们不会执行任何操作。它们通常与JavaScript一起用作AJAX应用程序的一部分。
<input type="submit">
按钮将提交用户点击它们时所使用的表单。
答案 2 :(得分:0)
找到它是如何完成的。 <input type="submit" value="Send" formaction="@Url.Action("Send","Home")" />
刚发现formaction
是新的HTML5
属性,用于指定HttpPost
操作表单的网址。 :)