我有一个加载值并捕获用户输入值的视图。该页面有多个提交类型按钮,每个按钮都有不同的用途。每个按钮将值发送到数据库中的不同表集。 例如,
我的查询为所有按钮制作通用表单POST方法。
我的观点如下:
[HttpPost]
public ActionResult CallAllocationSubmit(Allocation ObjAllocation, FormCollection frmCollection, string Allocate, string Defer)
{
try
{
if (!string.IsNullOrEmpty(Allocate))
{
// All code goes here
}
if (!string.IsNullOrEmpty(Defer))
{
// All Code goes here
}
return RedirectToAction("CallAllocation");
}
//catch block
}
我的控制器就像:
fake
我尝试使用if条件,但按钮不起作用,并且在点击时没有进入控制器。 请建议我如何实现此功能,或者为我的视图和控制器提供更正。谢谢!
答案 0 :(得分:1)
对于您的方案,您可以在后期操作中使用命令参数
即,
<button class="btn btn-success btn-icon " type="submit" style="width:100px;" name="command" value="Allocate">Allocate</button>
将所有buttons
的名称设置为命令,并将值设置为按钮操作。
现在,在您的帖子操作方法中,使用string command
作为参数
[HttpPost]
public ActionResult CallAllocationSubmit(Allocation ObjAllocation, FormCollection frmCollection, string command)
{
try
{
if (command = "Allocate"))
{
// code for Allocate action
}
if (command = "Defer"))
{
// code for Defer action
}
return RedirectToAction("CallAllocation");
}
//catch block
}
答案 1 :(得分:0)
为提交按钮指定相同的名称(不是id)。 mySubmitButton。将每个按钮的值设置为要检索的值(例如,值=&#34;分配&#34;) 然后在控制器中使用
public ActionResult CallAllocationSubmit(Allocation ObjAllocation, FormCollection frmCollection, string mysubmitButton)
答案 2 :(得分:0)
我会将ENUM用于多个按钮而不是字符串动作,因为你可以通过这种方式获得智能感知:
public enum FilterButton{
Allocate = 1,
Defer = 2, //...
};
public ActionResult CallAllocationSubmit(Allocation ObjAllocation,FormCollection frmCollection, FilterButton buttonAction)
{
if(buttonAction == FilterButton.Allocate){
//...code
}
}
在视图中:
<button type="submit" name="buttonAction" value="@FilterButton.Allocate" ></button>