【问题标题】:MVC How to change a buttons text on submitMVC如何在提交时更改按钮文本
【发布时间】:2012-08-12 21:53:45
【问题描述】:

我正在尝试创建一个带有几个按钮的简单 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>
}

【问题讨论】:

  • 你想从你的服务器设置按钮的文本(从动作方法返回)?

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


【解决方案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 });
    }
}

【讨论】:

  • 我做不到。我真的不太了解 javascript,但是脚本如何向 AddOne ActionResult 添加参数?
  • 有2个参数:idbuttonid 作为 Ajax.BeginForm 中的 routeValue 传递(请参阅 new { id = "btn-tc-top" }),并且 button 参数是按钮的名称,因此其值会自动提交。为了让 Ajax.* 助手工作,请确保您已将 jQuery.jsjQuery.unobtrusive-ajax.js 脚本(按此顺序)包含到您的页面中。如果您使用捆绑包,只需包含 @Scripts.Render("~/bundles/jquery")@Scripts.Render("~/bundles/jqueryval")
猜你喜欢
  • 1970-01-01
  • 2014-05-03
  • 2015-10-25
  • 1970-01-01
  • 2016-08-03
  • 2020-09-20
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
相关资源
最近更新 更多