MVC如何在提交时更改按钮文本

时间:2012-08-16 14:11:03

标签: asp.net-mvc asp.net-mvc-4

我正在尝试使用几个按钮创建一个简单的MVC 4应用程序,单击这些按钮会在其文本值中添加一个按钮。问题是当我使用<输入>按钮我提交表单时和使用<时无法更改文本值按钮>然后没有任何东西传递给行动。

我有一个简单的SQL数据库,控制器命中这个数据库是初始ViewData值的来源,以及它如何存储按钮的当前值。

此外,我目前正在尝试使用多种形式,但如果可以使用一种形式,那么这将是理想的。

@using (Ajax.BeginForm("AddOne", "Home", null, new AjaxOptions { UpdateTargetId = "btn-tc-top"}, new { @class = "rectangle-top" }))
{   
     <input type="submit" class="button" name="button" id="btn-tc-top" value="@ViewData["ct-t"]"/>
}
@using (Ajax.BeginForm("AddOne", "Home", null, new AjaxOptions { UpdateTargetId = "btn-tc-bottom"}, new { @class = "rectangle-bottom" }))
{   
      <button type="submit" class="button" name="button" id="btn-tc-bottom">@ViewData["ct-b"]</button>
}

1 个答案:

答案 0 :(得分:1)

您可以订阅OnSuccess处理程序:

@using (Ajax.BeginForm("AddOne", "Home", new { id = "btn-tc-top" }, new AjaxOptions { OnSuccess = "addSuccess" }, new { @class = "rectangle-top" }))
{   
    <input id="btn-tc-top" class="button" type="submit" name="button" value="@ViewData["ct-t"]" />
}
@using (Ajax.BeginForm("AddOne", "Home", new { id = "btn-tc-bottom" }, new AjaxOptions { OnSuccess = "addSuccess" }, new { @class = "rectangle-bottom" }))
{   
    <input id="btn-tc-bottom" class="button" type="submit" name="button" value="@ViewData["ct-b"]" />
}  

可以这样定义:

function addSuccess(result) {
    $('#' + result.id).val(result.text);
}

和控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["ct-t"] = "1";
        ViewData["ct-b"] = "2";
        return View();
    }

    [HttpPost]
    public ActionResult AddOne(string id, int button)
    {
        return Json(new { id = id, text = button + 1 });
    }
}