目前我正在使用多个提交按钮处理MVC4视图。要处理不同按钮的提交,我使用这个类:
我有三个按钮和一个标签: 开始 支持 恢复
如何根据按下哪个按钮在该标签中显示某个文字? 我想使用Ajax.BeginForm来更新标签文本(所以我不必重新加载网页)。
提前谢谢!
更新 例如,当我单击“开始”按钮时,将执行一个方法。此方法返回true或false。如何根据方法的结果捕获这个bool并在标签中显示文本?
更新2:
<div>
<fieldset>
<legend>Admin Form</legend>
@Html.Label("Options")
<div id="StartBtn">
<input id="Start" type="submit" value="Start" name="action:Start" />
</div>
<div id="StandbyBtn">
<input id="Standby" type="submit" value="Standby" name="action:Standby" />
</div>
<div id="ResumeBtn">
<input id="Resume" type="submit" value="Resume" name="action:Resume" />
</div>
</fieldset>
</div>
[MultipleButton(Name = "action", Argument = "Start")]
public ActionResult Start()
{
if (start())
{
}
else
{
}
}
答案 0 :(得分:2)
从您的更新中我将使用ajax调用而不是ajax表单
$('.btnSubmit').on('click', function(){
$.ajax({
url: '@Url.Action('Start', 'Controller')',
type: 'post',
data: {
button: this.id
}
dataType: 'json',
success: function(result){
if(result.Success){
$('.lblText').text(result.SetText);
}
}
});
});
我不知道你想要传递给你的控制器但是如果你在所有按钮上放置相同的类(你需要将它们改为按钮而不是提交),那么this.id将是id单击的按钮,将被发送到控制器
然后在你的控制器上有一个输入字段匹配数据字段中的内容
public ActionResult Start(string button){
//do something
//from here http://stackoverflow.com/questions/7732481/returning-json-from-controller-never-a-success
return Json(new { Success = "true", SetText = 'SetText' });
//Where SetText is whatever you want your label set to.
}
答案 1 :(得分:0)
您可以查看此帖子。 http://www.developersnote.com/2013/02/multiple-button-in-mvc-4.html
@using (Html.BeginForm("ActionTaken", "TestController"))
{
<button name="button" value="ActionOne" class="button" style="width: 200px;">
test1</button>
<button name="button" class="button" style="width: 160px;" value="ActionTwo">
test2</button>
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ActionTaken(string butt)
{
string ButtCommand= butt;
switch (ButtCommand)
{
case "ActionOne":
//do stuff here
case "ActionTwo":
//do stuff here
default:
return View();
}
}