1

目前我正在开发一个带有多个提交按钮的 MVC4 视图。为了处理不同按钮的提交,我使用这个类:

http://blog.maartenballiauw.be/post/2009/11/26/Supporting-multiple-submit-buttons-on-an-ASPNET-MVC-view.aspx

我有三个按钮和一个标签: Start Standby Resume

如何根据按下的按钮在该标签中显示特定文本?我想使用 Ajax.BeginForm 来更新标签文本(所以我不必重新加载网页)。

先感谢您!


更新: 例如,当我单击开始按钮时,将执行一个方法。此方法返回 true 或 false。如何根据方法的结果捕获这个布尔值并在标签中显示文本?

更新 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
        {

        }
    }
4

2 回答 2

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.
}
于 2013-11-04T14:16:19.593 回答
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();
             }
          }
于 2014-01-22T08:18:02.260 回答