Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 两个不同提交按钮的不同行为?_Html_Razor_Asp.net Webpages - Fatal编程技术网

Html 两个不同提交按钮的不同行为?

Html 两个不同提交按钮的不同行为?,html,razor,asp.net-webpages,Html,Razor,Asp.net Webpages,我试图在我的表单中有两个提交按钮——一个接受会议;另一个拒绝了。他们都会有不同的行为。在我的C#代码中我该怎么做 我想要的功能本质上是 if(isPost) { if(//accept button pressed(Request.Form[???])) { } else { } } 这是我的HTML: 接受 减少 很简单,但我在互联网或任何文档中都找不到这方面的测试。有人知道我要做什么吗?通常在c#的代码隐藏中,您会查找单击了哪个按钮。每个按

我试图在我的表单中有两个提交按钮——一个接受会议;另一个拒绝了。他们都会有不同的行为。在我的C#代码中我该怎么做

我想要的功能本质上是

if(isPost) {
   if(//accept button pressed(Request.Form[???])) 
   {

   } 
   else 
   {


   }
}
这是我的HTML:

接受
减少

很简单,但我在互联网或任何文档中都找不到这方面的测试。有人知道我要做什么吗?

通常在c#的代码隐藏中,您会查找单击了哪个按钮。每个按钮都有一个事件处理程序,代码将根据单击的按钮做出反应

this.btnRejectAppointment.Click += new System.EventHandler(this.btnRejectAppointment_Click);
然后是你的方法

private void btnRejectAppointment_Click(object sender, System.EventArgs e)
{
    //code to reject appt.
}

另一个按钮的设置相同。

可能的解决方案之一-使用两个
LinkButton
类型的按钮,但指定稍微不同的
PostBackUrl


在代码隐藏中:

protected void MyHandler1(object sender, EventArgs args)
{ /* do stuff */ }
公共枚举模式
{
不详,
接受
减少
}
受保护的无效页面加载(对象发送方、事件args args)
{
模式currentMode=模式未知;
var rawMode=Request.QueryString[“Mode”];
如果(rawMode!=null)
{
currentMode=(模式)Enum.Parse(
类型(模式),
rawMode.ToString())
}
}

据我所知,您有一个控制器操作,如下所示:

public ActionResult MyAction(string accept, string decline)
{
    if (!string.IsNullOrEmpty(accept))
    {
        //do something
    }
    else 
    {
        //do something else
    }
}

ASP.NET按钮控件具有OnClick事件,因此为按钮的每个控件添加不同的处理程序:

<asp:Button OnClick="MyHandler1" ... />

假设您使用的是MVC3,您将执行以下操作

@using (Html.BeginForm("Accept","Meeting")) 
{
   <input type="submit" value="Accept" /> 
}
@using (Html.BeginForm("Decline","Meeting")) 
{
   <input type="submit" value="Decline" /> 
}

为每个按钮元素赋予相同的名称(在本例中为“SubmitButton”),但赋予不同的值,然后检查服务器代码中的不同值,即:

<button type="submit" name="SubmitButton" value="Accept">Accept</button>
<button type="submit" name="SubmitButton" value="Decline">Decline</button>

请注意,这在某些早期版本的IE上不起作用,在发出post请求之前,您可能需要在客户端上执行一些javascript。

我希望有一种更简单的方法来处理.cshtml网页!:)您已经标记了asp.net和razor,您正在使用MVC3。我正在使用WebMatrix的网页。这不是一种非常干净的方法。由于人们可能会弄乱查询字符串,因此在页面上有两个按钮,每个按钮都有自己的链接事件处理程序和处理方法是一种更好的方法。您可以通过方法的姿势将处理分开。这适用于asp.net mvc,而不是webformsmodel@coalvilledave:可能是,你为什么这么认为?我已经很久没有使用webforms了,忘记了所有的活动内容tbh。这是这里最简单的解决方案,正是我想要的简单功能,非常感谢!
<button type="submit" name="SubmitButton" value="Accept">Accept</button>
<button type="submit" name="SubmitButton" value="Decline">Decline</button>
string buttonClicked = Request.Form["SubmitButton"]
if(buttonClicked == "Accept")
{
    // Accept code
}
else if(buttonClicked == "Decline")
{
    // Decline code
}