0

クリックするとテキスト値に1つ追加される、いくつかのボタンを備えた単純なMVC4アプリを作成しようとしています。問題は、<入力>ボタンを使用すると、フォームを送信するときにテキスト値を変更できず、<ボタン>を使用すると、アクションに何も渡されないことです。

コントローラがヒットする単純なSQLデータベースがあります。これは、ViewDataの初期値の取得元であり、ボタンの現在の値をどのように格納するかを示しています。

また、私は現在、複数のフォームでこれを実行しようとしていますが、1つのフォームで可能であれば、それが理想的です。

@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>
}
4

1 に答える 1

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 });
    }
}
于 2012-08-16T14:31:07.843 に答える