多个按钮采用相同的形式

时间:2014-07-17 12:14:10

标签: asp.net asp.net-mvc-4 button

我有一个简单的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 ,请发布一些代码:)

3 个答案:

答案 0 :(得分:0)

您可以通过其action属性配置表单的目标。

因此,您可以通过更改表单的操作属性来完成此操作。您需要使用客户端脚本来执行此操作。

另一个选项是,您可以发送包含用户选项的值(例如Option =“reset”或Option =“send”)。并确定您需要在默认视图中查看的视图。

答案 1 :(得分:0)

将输入类型=“按钮”更改为type =“submit。

<input type="button" />按钮不会提交表单 - 默认情况下它们不会执行任何操作。它们通常与JavaScript一起用作AJAX应用程序的一部分。

除非您使用JavaScript另行指定,否则

<input type="submit">按钮将提交用户点击它们时所使用的表单。

答案 2 :(得分:0)

找到它是如何完成的。 <input type="submit" value="Send" formaction="@Url.Action("Send","Home")" />刚发现formaction是新的HTML5属性,用于指定HttpPost操作表单的网址。 :)