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
}