C# 是否可以知道单击了两个提交按钮中的哪一个?

C# 是否可以知道单击了两个提交按钮中的哪一个?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在考虑做这样的事情: @if(Model.ShowSubmitButton) { <input id="submitButton" type="submit" value="Update stuff" /> } else { <input id="continueButton" type="submit" value="Continue to next page" /> } public class MyModelDto { //

我正在考虑做这样的事情:

 @if(Model.ShowSubmitButton)
 {
    <input id="submitButton" type="submit" value="Update stuff" />
 }
 else
 {
    <input id="continueButton" type="submit" value="Continue to next page" />
 }
public class MyModelDto
{
    // other properties
    public MyCustomAction Action { get; set; }
}
@if(Model.ShowSubmitButton)
{
}
其他的
{
}
那么,在控制器中,是否可以知道从哪个按钮调用它?
我最初让我的控制器方法处理第一个按钮,现在添加了第二个具有不同功能的按钮,想看看是否使用相同的方法可以确定单击了哪个按钮?如果这种方法不可行,你有什么建议

您可以添加一个隐藏字段。不是理想的解决方案,但确实有效

 @if(Model.ShowSubmitButton)
 {
    <input type="hidden" name="buttonClicked" value="1">
    <input id="submitButton" type="submit" value="Update stuff" />
 }
 else
 {
    <input type="hidden" name="buttonClicked" value="2">
    <input id="continueButton" type="submit" value="Continue to next page" />
 }

没有额外的信息。我可能会将它们分开,而不是让同一个表单的两个提交按钮做两件不同的事情,但是如果你真的想这样做,一种方法是添加一个额外的POST变量,告诉你哪个被点击了

@if(Model.ShowSubmitButton)
{
    <input type="hidden" name="submitStyle" value="update"/>
    <input id="submitButton" type="submit" value="Update stuff" />
}
else
{
    <input type="hidden" name="submitStyle" value="continue"/>
    <input id="continueButton" type="submit" value="Continue to next page" />
}
@if(Model.ShowSubmitButton)
{
}
其他的
{
}
来回答你的补充问题。可以将此变量添加到回发的模型中,也可以将其作为附加参数添加

// Where "MyModel" has a public property "SubmitStyle"
public ActionResult MyAction(MyModel model)

// Or an int, string, whatever type of parameter you want/need.
// In my example it was a string so...
public ActionResult MyAction(string submitStyle/*, <other params...>*/)
//其中“MyModel”具有公共属性“SubmitStyle”
公共行动结果MyAction(MyModel模型)
//或int、string或您想要/需要的任何类型的参数。
//在我的例子中,它是一个字符串,所以。。。
公共操作结果MyAction(字符串submitStyle/*,*/)
有一种优雅的方法(目前仅在chrome上测试),定义两个输入

<input type="submit" value="Next" name="Action"/>
<input type="submit" value="Prev" name="Action"/>
在哪里

public enum MyCustomAction
{
  Next=0,
  Prev=1
}

现在检查动作的值。

谢谢,我会在控制器端使用它吗?谢谢,我现在将它应用到我的代码中,看看它是如何工作的:)你只需给按钮一个
name=“button”
,然后向你的POST方法添加一个参数
string button
(参数的值将是
“Update stuff”)
“继续下一页”
)。不需要隐藏输入。
public enum MyCustomAction
{
  Next=0,
  Prev=1
}