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

时间:2016-03-31 19:20:11

标签: 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" />
 }

然后在控制器中可以知道从哪个按钮调用? 我最初让我的控制器方法使用第一个按钮,现在添加了具有不同功能的第二个按钮,想看看是否使用相同的方法我可以确定单击了哪个按钮?如果不可能这样,那你有什么建议?

3 个答案:

答案 0 :(得分:1)

您可以添加隐藏字段。不是理想的解决方案,但能胜任。

 @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" />
 }

在你的控制器中你会接受它:

public ActionResult MyAction(MyObject myobj, int buttonClicked)

答案 1 :(得分:1)

不是没有额外信息。我可能会拆分它们而不是为同一个表单做两个提交按钮做两个不同的事情,但如果你真的想沿着这条路走一条路就是添加一个额外的发布变量来告诉你哪个被点击了。

@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" />
}

回答您的其他问题。您可以将此变量添加到回发的模型中,也可以将其添加为附加参数。

// 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...>*/)

答案 2 :(得分:0)

有一种优雅的方式(仅在镀铬上测试过),定义了两个输入

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

现在你输入的模型在控制器放置模型中定义如下:

public class MyModelDto
{
    // other properties
    public MyCustomAction Action { get; set; }
}

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

现在检查行动的价值。