我想在我的表单中设置两个提交按钮 - 一个接受会议;另一个拒绝他们。他们都会有不同的行为。我怎么能用我的C#代码?
我想要的功能基本上是
if(isPost) {
if(//accept button pressed(Request.Form[???]))
{
}
else
{
}
}
这是我的HTML:
<button name="accept" type="submit">Accept</button>
<div class="spacer"></div>
<button name="decline" type="submit">Decline</button>
<div class="spacer"></div>
很简单,但我无法在互联网或任何文档中找到对此的测试。有谁知道我会为此做些什么?
答案 0 :(得分:1)
据我记忆,你有一个控制器动作如下:
public ActionResult MyAction(string accept, string decline)
{
if (!string.IsNullOrEmpty(accept))
{
//do something
}
else
{
//do something else
}
}
答案 1 :(得分:1)
假设你正在使用MVC3,你会做类似
的事情@using (Html.BeginForm("Accept","Meeting"))
{
<input type="submit" value="Accept" />
}
@using (Html.BeginForm("Decline","Meeting"))
{
<input type="submit" value="Decline" />
}
然后,您可以分别在会议控制器的“接受”和“拒绝”操作中接受和拒绝代码。根本不需要if语句。
示例控制器
public class MeetingController : Controller
{
[HttpPost]
public ActionResult Accept()
{
//Do accept stuff
return View();
}
[HttpPost]
public ActionResult Decline()
{
//Do decline stuff
return View();
}
}
答案 2 :(得分:1)
为每个按钮元素指定相同的名称(在此示例中为“SubmitButton”),但使用不同的值,然后检查服务器代码中的不同值,即:
<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
}
请注意,这在某些早期版本的IE上不起作用,并且您可能必须在发布请求之前在客户端上执行一些小的JavaScript。
答案 3 :(得分:0)
通常在c#的代码隐藏中,你会找到点击的按钮。你有一个每个按钮的事件处理程序,你的代码会根据点击的按钮做出反应。
this.btnRejectAppointment.Click += new System.EventHandler(this.btnRejectAppointment_Click);
然后你的方法
private void btnRejectAppointment_Click(object sender, System.EventArgs e)
{
//code to reject appt.
}
你可以为另一个按钮设置SAME。
答案 4 :(得分:0)
其中一种可能的解决方案 - 使用LinkButton
类型的两个按钮,但指定的PostBackUrl
略有不同:
<!-- Accept meeting button -->
<asp:LinkButton ID="acceptMeeting" runat="server"
PostBackUrl="MeetingsManager.aspx?Mode=Accept" />
<!-- Decline meeting button -->
<asp:LinkButton ID="declineMeeting" runat="server"
PostBackUrl="MeetingsManager.aspx?Mode=Decline" />
在代码背后:
public enum Mode
{
Unknown,
Accept,
Decline
}
protected void Page_Load(object sender, EventArgs args)
{
Mode currentMode = Mode.Unknown;
var rawMode = Request.QueryString["Mode"];
if (rawMode != null)
{
currentMode = (Mode)Enum.Parse(
typeof(Mode),
rawMode.ToString())
}
}
答案 5 :(得分:0)
ASP.NET按钮控件具有OnClick事件,因此为每个按钮添加不同的处理程序:
<asp:Button OnClick="MyHandler1" ... />
代码背后的:
protected void MyHandler1(object sender, EventArgs args)
{ /* do stuff */ }